Ruby on rails Rails形成并有许多贯穿参数错误

Ruby on rails Rails形成并有许多贯穿参数错误,ruby-on-rails,Ruby On Rails,我正在尝试构建一个表单,用于在其他两个模型之间创建连接模型。我有一个图书模型和用户模型,还有一个叫做Reads的模型,这就是我的join。以下是我如何建立协会的: class User < ActiveRecord::Base has_many :reads has_many :books, :through => :reads end class Book < ActiveRecord::Base has_many :reads has_many :user

我正在尝试构建一个表单,用于在其他两个模型之间创建连接模型。我有一个图书模型和用户模型,还有一个叫做Reads的模型,这就是我的join。以下是我如何建立协会的:

class User < ActiveRecord::Base
  has_many :reads
  has_many :books, :through => :reads
end

class Book < ActiveRecord::Base
  has_many :reads
  has_many :users, :through => :reads
end

class Read < ActiveRecord::Base
  belongs_to :book
  belongs_to :user
end
这是我在app/views/books/show.html.erb中的表格:

<%= form_for(@read) do |f| %>
  <%= f.hidden_field :book_id, value: @book.id %>
  <%= button_to 'Add to Reads', {controller: 'reads', action: 'create'}, {class: 'btn'} %>
<% end %>
我用的是强参数

def read_params
  params.require(:read).permit(:user_id, :book_id)
end
谢谢你的帮助

表单中的第一个参数不能包含nil或为空

这意味着表单中的
@read
nil
。由于您处于Books控制器的show操作中,因此必须在Books控制器中定义此变量

def show
  @read = Read.new
  ...
end

哇,这很有道理。谢谢你的提示。
def read_params
  params.require(:read).permit(:user_id, :book_id)
end
def show
  @read = Read.new
  ...
end