如何为#<book :: activerecord_relation:0x007fb709a6a8c0>解决未定义的方法`to_key'?</book :: activerecord_relation:0x007fb709a6a8c0>

时间:2015-03-12 08:37:01

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

我遇到了未定义方法`to_key'

的问题

这是我的books_controller.rb

 class BooksController  < ApplicationController
   def index
    @books = Book.where(user_id: current_user.id)
    end
 end

和我的索引页面如下。

index.html.erb

<div>
  <%= form_for @books do |f| %>
...
...
    <% end %>
</div>

现在,当我要访问索引页面时,我收到了如下错误。

undefined method `to_key' for #<Book::ActiveRecord_Relation:0x007fb709a6a8c0>

2 个答案:

答案 0 :(得分:14)

index通常会返回一个集合。事实上,你的控制器符合。但是,您的视图会尝试为其定义表单。你发现,这不会成功。表单适用于实体,不适用于集合。该错误在您的视图中以及您希望如何处理index

答案 1 :(得分:8)

应该是:

 class BooksController  < ApplicationController
   def index
     @book = Book.find_by_id(2)
   end

   def index
     @book = Book.new
   end