所以我刚刚开始使用Rails,并且我正在尝试使用Form创建一个Object(在我的情况下是一个book_loan)。问题是我通过点击一本书来获得这个表格,所以我将book_id作为参数传递,如localhost:3000 / loans / new?id = 1.
现在我不希望用户能够在表单中设置book id字段,因为我已经知道了id。所以我的问题是如何在表单中设置值。我一直在尝试这样的事情:
<% form_for(@loan) do |f| %>
<%= f.error_messages %>
...
<%= @loan.book_id = params[:id] %>
<%= f.submit 'Create' %>
<% end %>
没有任何成功。有人对我有暗示吗?
答案 0 :(得分:4)
在您的控制器的create
操作中,您可以获取图书实例,然后通过关联构建新的贷款,传递从表单提交的值。像这样:
def new
@loan = Loan.new
end
def create
book = Book.find(params[:id])
@loan = book.loans.build(params[:loan])
@loan.save # etc...
end
因为您正在通过关联构建新的贷款,所以它将设置正确的book_id
。
答案 1 :(得分:2)
在您的控制器操作中,将@loan.book_id
设置为params[:id]
,然后在模板中设置:
<%= f.hidden_field :book_id %>