rails - hidden_field和hidden_field_tag究竟做了什么?
我通读了hidden_fields
的techy定义,但我不确定它的真实含义。我的理解是,它允许您传入特定参数的属性。例如,如果您具有丰富的联接模型,则可以使用hidden_field
将user_id分配给用户的联接模型属性。那是对的吗?rails - hidden_field和hidden_field_tag究竟做了什么?
如果是这样,在表单或控制器中执行它会更好吗?
这两种方法都是帮助程序来创建类型为“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。
由于@wizard OGZ的。我想'hidden_field'会不是安全的,我试图通过'create'方法通过控制器保存它,但遇到了麻烦,当你通过丰富的连接模型进行关联时,他们是否应该自动更新像user_id这样的东西?如果是这样,我很明显我的关联做了一些错误。谢谢。我还在这里发布了另一个问题:[question](http://stackoverflow.com/questions/7740873/nested-attributes-not-saving-the-user-id-in-join-表)如果你想看看。谢谢。 – noob
啊,我认为这个问题在另一个问题中得到了更好的解释,我会在那里发帖 –
它会生成一个隐藏式输入字段...
<input type="hidden" />
这是存储要与形式,而无需有可见的领域提交的信息的一种方式。
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}" />
'hidden_field'简单地创建'“'。 – Zabba