开发者

How to set a predefined value in a form in Rails

开发者 https://www.devze.com 2023-01-01 13:16 出处:网络
So I just got started in Rails, and I\'m trying to create an Object (a book_loan in my case) with a Form. The 开发者_如何学JAVAthing is that I get to this form by clicking on a book, so I pass the boo

So I just got started in Rails, and I'm trying to create an Object (a book_loan in my case) with a Form. The 开发者_如何学JAVAthing is that I get to this form by clicking on a book, so I pass the book_id as a parameter, like localhost:3000/loans/new?id=1.

Now I don't want the user to be able to set the book id field in the form, since I already know the id. So my question is how to set the value in the form. I have been trying things like:

<% form_for(@loan) do |f| %>
  <%= f.error_messages %>
  ...
  <%= @loan.book_id = params[:id] %>
  <%= f.submit 'Create' %>
<% end %>

without any success. Does anybody have a hint for me?


In your controller's create action, you can get hold of the book instance and then build a new loan through the association, passing in the values submitted from the form. Something like this:

def new
  @loan = Loan.new
end

def create
  book = Book.find(params[:id])
  @loan = book.loans.build(params[:loan])
  @loan.save # etc...
end

Because you're building the new loan through the association, it will have the correct book_id set on it.


In your controller action, set @loan.book_id to params[:id], then, in your template:

<%= f.hidden_field :book_id %>

0

精彩评论

暂无评论...
验证码 换一张
取 消