rails - hidden_​​field和hidden_​​field_tag究竟做了什么?

问题描述:

我通读了hidden_fields的techy定义,但我不确定它的真实含义。我的理解是,它允许您传入特定参数的属性。例如,如果您具有丰富的联接模型,则可以使用hidden_field将user_id分配给用户的联接模型属性。那是对的吗?rails - hidden_​​field和hidden_​​field_tag究竟做了什么?

如果是这样,在表单或控制器中执行它会更好吗?

+1

'hidden_​​field'简单地创建'“'。 – Zabba

这两种方法都是帮助程序来创建类型为“hidden”的HTML输入标记,而且这些方法用于向请求(通常是表单POST)添加参数。真的,参数可以是你想要发送的任何信息。但要小心,因为隐藏的区域很容易被篡改。

这里是一个将在一个隐藏字段

# Form 
<%= form_tag foo_path do %> 
    <%= hidden_field_tag "user_id", @user.id %> 
    .... 
    <%= submit_tag "Click Me" %> 
<% end %> 

# Controller 
def foo 
    # params[:user_id] is set with the value from the hidden field 
    # Do useful stuff with the POST data 
end 

虽然你可以通过发送东西的用户ID,如user_ID的是这样的一个例子,我发现需要实属罕见。如果在给定情况下总是需要user_id,则可以考虑使用嵌套路由http://guides.rubyonrails.org/routing.html#nested-resources

+0

由于@wizard OGZ的。我想'hidden_​​field'会不是安全的,我试图通过'create'方法通过控制器保存它,但遇到了麻烦,当你通过丰富的连接模型进行关联时,他们是否应该自动更新像user_id这样的东西?如果是这样,我很明显我的关联做了一些错误。谢谢。我还在这里发布了另一个问题:[question](http://stackoverflow.com/questions/7740873/nested-attributes-not-saving-the-user-id-in-join-表)如果你想看看。谢谢。 – noob

+0

啊,我认为这个问题在另一个问题中得到了更好的解释,我会在那里发帖 –

它会生成一个隐藏式输入字段...

<input type="hidden" />

这是存储要与形式,而无需有可见的领域提交的信息的一种方式。

documentation

hidden_field_tag 'tags_list'生成...
<input id="tags_list" name="tags_list" type="hidden" />

hidden_field_tag是指不使用模型中使用而hidden_field是指在结合使用具有form_for呼叫和模型。

hidden_field(:signup, :pass_confirm)生成...
<input type="hidden" id="signup_pass_confirm" name="signup[pass_confirm]" value="#{@signup.pass_confirm}" />