2011-12-29 52 views
0

我在的form_for,在那裏我有它設置這樣有一個隱藏字段無法工作:如何獲得hidden_​​field驗證時,對Rails 3

= f.hidden_field :building_id, :value => @building 

凡@building在控制器設置在新動作:

@building = params[:building][:building_id] 

如果驗證失敗,則創建行動得到這一行:

format.html { render action: "new" } 

和頁面呈現,hidden_​​field沒有得到它的價值。

根據答案,這question之一,它看起來像也許我應該有這條​​線在我的form_for:

= f.hidden_field :building_id, params[:building][building_id] 

,但我得到一個錯誤,當我這樣做。我究竟做錯了什麼?

回答

2

這是因爲在發生驗證錯誤後加載頁面時不再設置params[:building][:building_id],因爲它現在存儲在params[:building_id]中。像@building = params[:building_id] || params[:building][:building_id]應該很好。

+0

正確的主意!我必須在控制器的create操作中設置參數,例如@building = [:<控制器名稱> [:building_id]的單數版本。 – John 2011-12-29 01:38:31

+0

對不起,是不是在考慮它已經設置爲從表單調用,而不僅僅是hidden_​​field_tag。 – 2011-12-29 01:59:58