2014-09-26 10 views
0

我有一個form_tag,需要一個代碼輸入:的Rails的form_tag,加入了隱藏字段

= form_tag({controller: "charges", action: "new"}, method: "get") do 
    = label_tag(:code, "Check code:") 
    = text_field_tag(:code) 
    = hidden_field :item, value: @item.id 
    = submit_tag("Search") 

我想有一個隱藏字段,增加了一定的價值的URL。我基本上想創建網址example.com/charges/new?item=1&code=mycode,其中'1'是項目ID,'my​​code'是用戶輸入的代碼,但我無法讓它工作。

回答

3

hidden_fieldhidden_field_tag是不一樣的。你想要後者。 hidden_fieldtext_field一樣工作,因此需要一個對象(通常在form_for內)。 hidden_field_tag,如text_field_tag,沒有。這在Rails中是一個很常見的「陷阱」。

試試這個:

= hidden_field_tag "item", @item.id 

附:如果這個表單是用來創建一個新的模型對象的(從你的代碼我猜這是創建一個Charge對象),你可能想用form_for代替。事情是這樣的:

= form_for :charge do |f| 
    = f.label :code, "Check code:" 
    = f.text_field :code 
    = f.hidden_field :item_id, @item.id 
    = f.submit "Search" 

這可能會簡化你的控制器有很多,因爲在你的create行動,你可以只是做Charge.create(params)。我只是猜測你的實際模型是什麼樣子,但它應該給你正確的想法。您應該通讀form_for docs以獲取更多信息。