注意:我使用的是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是不正确的我试着把它们改成::ResolverActiveRecord::Base::Resolver,但都没有成功如果没有rails,我如何使用一个名为Resolver的类,假设它是ActionView::Resolver

最佳答案

在视图中进行查询是一种反模式。
不管怎样,正确的方法是在控制器中执行并将变量传递给视图。
@resolvers_count = Resolver.count并在视图中选中if @resolvers_count > 0
更好的方法是
@resolvers_exist = Resolver.exists?然后if @resolvers_exist

09-25 16:15