调用category.name时未定义的局部变量或方法

时间:2015-05-09 17:00:09

标签: ruby-on-rails ruby-on-rails-4

我为我的图书模型创建了一个分类模型,并且已经与

相关联
li

has_many :books

我还可以在我的_form.html.haml中添加一个简单的表单下拉列表,然后保存带有类别关联的书籍条目;每当我尝试在index.html.haml文件中显示所有类别时,我都会收到一个Action Controller:异常捕获错误:

"未定义的局部变量或方法`分类'对于#<#:0x39040f8>"

这是我使用的代码:

belongs_to :category

修改

我还在books_controller.rb中添加了一个索引过滤器

- Category.all.each do |category|
  =link_to category.name, books_path(category: categroy.name)

没有link_to代码,当我尝试在URL中手动输入索引过滤器时,索引过滤器会起作用:

def index
    if params[:category].blank?
        @book = Book.all.order("created_at DESC")
    else
        @category_id = Category.find_by(name: params[:category]).id
        @book =Book.where(category_id: @category_id).order("created_at DESC")
    end
end 

看起来类别模型有效,但我不确定为什么它不允许我调用category.name

我刚刚在2周前开始使用rails,非常感谢社区提供的任何帮助。如果我需要提供更多信息,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:2)

你写了categroy,但变量的名称是category:)

应该是 =link_to category.name, books_path(category: category.name)