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

Kin*_*hah 5 ruby ruby-on-rails ruby-on-rails-4

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

这是我的books_controller.rb

 class BooksController  < ApplicationController
   def index
    @books = Book.where(user_id: current_user.id)
    end
 end
Run Code Online (Sandbox Code Playgroud)

和我的索引页面如下.

index.html.erb

<div>
  <%= form_for @books do |f| %>
...
...
    <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

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

undefined method `to_key' for #<Book::ActiveRecord_Relation:0x007fb709a6a8c0>
Run Code Online (Sandbox Code Playgroud)

Rem*_*anu 14

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


lon*_*NEY 8

应该:

 class BooksController  < ApplicationController
   def index
     @book = Book.find_by_id(2)
   end
Run Code Online (Sandbox Code Playgroud)

要么

   def index
     @book = Book.new
   end
Run Code Online (Sandbox Code Playgroud)