这是视图的摘录 -
<%= @user.id %> is the user id
<%= @book.id %> is the book id
<div class="field">
<%= f.select :contribtype, options_for_select(Contribution::CONTRIB_TYPES) %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我已经从之前的视图传递了用户和书籍的参数,例如我有
http://localhost:3000/contributions/new?book_id=1&user_id=5
作为表单的URL。正确的user_id和book_id显示在页面上。
我在控制器中有以下内容 -
def new
@user = User.find_by_id(params[:user_id])
@book = Book.find_by_id(params[:book_id])
@contribution = Contribution.new(params[book_id: @book.id, user_id: @user.id])
end
def create
@contribution = Contribution.new(contribution_params)
....
...但是在创建对象时没有捕获user_id和book_id。我没有收到任何错误,数据根本没有在新对象中设置。我应该通过不同的方式在create动作中传递参数吗?
答案 0 :(得分:1)
我会使用隐藏字段作为快速修复:
@contribution = Contribution.new
in html:
<%= f.hidden_field :user_id, value: @user.id %>
<%= f.hidden_field :book_id, value: @book.id %>
请务必在contribution_params