如何在Rails中的表单中设置预定义的值

时间:2010-05-25 19:07:58

标签: ruby-on-rails

所以我刚刚开始使用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 %>

没有任何成功。有人对我有暗示吗?

2 个答案:

答案 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 %>