如何获得hidden_​​field验证时,对Rails 3

问题描述:

我在的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] 

,但我得到一个错误,当我这样做。我究竟做错了什么?

这是因为在发生验证错误后加载页面时不再设置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