2010-05-25 59 views
2

所以我剛剛開始使用Rails,並嘗試使用Form創建一個Object(我的情況爲book_loan)。問題是我通過點擊一本書來獲得這個表單,所以我將book_id作爲參數傳遞,如localhost:3000/loans/new?id = 1。如何在Rails中的窗體中設置預定義的值

現在我不希望用戶能夠在窗體中設置書籍ID字段,因爲我已經知道該ID。所以我的問題是如何設置窗體中的值。我一直在嘗試諸如:

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

沒有任何成功。有人給我提示嗎?

回答

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集。

+0

然後你需要在創建操作中做類似的事情。 – 2010-05-25 22:32:13

+0

瑞恩是正確的。我相應地更新了我的答案。 – 2010-05-26 17:43:35

+0

哪個控制器? – justinxreese 2011-02-20 23:59:58

2

在你的控制器動作,設置@loan.book_idparams[:id],那麼,在你的模板:

<%= f.hidden_field :book_id %>

+3

用戶應該使用這種安靜的路由。隱藏的字段是黑客。 – 2010-05-25 22:32:34

相關問題