0
这是一个观点摘录 -导轨 - 未能从新传递参数的控制器创建
<%= @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未在对象被创建时,它被捕获。我没有收到任何错误,数据根本就没有在新对象中设置。我应该通过不同的参数创建行为吗?
我不能接受再回答7分钟,但这已经为我解决了。我是否据此推断,即使您已经在控制器中定义了变量,创建操作将仅使用在提交的表单中的字段中捕获的参数? – RADan 2014-09-10 09:15:53
是的,因为你的实例变量不会在请求之间持久化,http无状态(除非你使用cookies/session) – apneadiving 2014-09-10 09:16:55
Gotcha。非常感谢您为我清除:) – RADan 2014-09-10 09:21:38