Ruby on Rails从控制器访问隐藏值

时间:2009-12-15 09:58:56

标签: ruby-on-rails

如何从控制器类访问隐藏值字段。

我的隐藏值字段是

<input id="user_id" name="user.id" size="30" type="text" value="<%= @user.id %>" />

目前我正在尝试使用@ user.id访问, @user = User.find(@ user.id) 但它的生成错误如

“被调用id为nil,错误地为4 - 如果你真的想要id为nil,请使用object_id”

然后我如何访问上面的隐藏值

提前谢谢, 马赫什

2 个答案:

答案 0 :(得分:1)

您需要将字段名称更改为user_id以更加传统。

您可以使用params哈希访问任何POST / GET数据。

# your controller
params[:user_id]
# => "field_value

答案 1 :(得分:1)

两个快速笔记。我会避免依赖于表单提交的user_id,这很容易伪造。最好从控制器创建,更新或删除方法中的身份验证中提取它。

其次,我会调查表单助手,例如form_forfields_for中的hidden_field

<% form_form @some_model do %>
   <%= f.hidden_field(:some_field_on_the_model) %>
   <%= hidden_field(:some_model, :some_field) %>

然后使用先前详细的参数hash来将值拉回到控制器中。

mymodel = MyModel.find(params[:some_field])