注意:我使用的是ruby 2.5.1和rails 4.2.10
我在我的rails项目中遇到了一个错误,我相信这是因为我的一个类叫做Resolver
以下是相关文件:
迁移
class CreateResolvers < ActiveRecord::Migration
def change
create_table :resolvers do |t|
t.belongs_to :user, index: true
t.string :name
end
end
end
等级
class Resolver < ActiveRecord::Base
belongs_to :user
end
控制器
class ResolversController < ApplicationController
def create
ent = Entity.new(entity_params)
ent.save!
redirect_to '/getting_started/resolvers'
end
def update
resToUpdate = Resolver.find(params['id'])
resToUpdate.update(resolver_params)
redirect_to '/getting_started/resolvers'
end
private
def resolver_params
params.require('resolver').permit(
:name
)
end
end
所以这里是我的错误:当我进入rails控制台并执行
Resolver.count
操作时,它工作正常,但是在我的实际html页面中,我有一行:<% if (Resolver.count > 0) %>
我犯了个错误:
undefined method 'count' for ActionView::Resolver:Class
现在,显然
ActionView::Resolver:Class
是不正确的我试着把它们改成::Resolver
和ActiveRecord::Base::Resolver
,但都没有成功如果没有rails,我如何使用一个名为Resolver
的类,假设它是ActionView::Resolver
最佳答案
在视图中进行查询是一种反模式。
不管怎样,正确的方法是在控制器中执行并将变量传递给视图。@resolvers_count = Resolver.count
并在视图中选中if @resolvers_count > 0
更好的方法是@resolvers_exist = Resolver.exists?
然后if @resolvers_exist