我阅读了hidden_fields
的技术定义,但我不确定它的真正含义。我的理解是它允许您传入某些参数的属性。例如,如果您有一个富连接模型,则可以使用hidden_field
将user_id分配给用户的连接模型属性。这是对的吗?
如果是这样,在表格或控制器中进行操作会更好吗?
答案 0 :(得分:33)
这两种方法都是帮助者创建“隐藏”类型的HTML输入标记,是的,这些标记用于向请求添加参数(通常是表单POST)。实际上,参数可以是您要与请求一起发送的任何信息。但要小心,因为隐藏的字段很容易被篡改。
这是一个在隐藏字段中发送用户ID的示例
# 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
虽然你可以传递像user_id这样的东西,但我发现对它的需求很少。如果在给定情况下始终需要user_id,则可以考虑使用嵌套路由http://guides.rubyonrails.org/routing.html#nested-resources。
答案 1 :(得分:10)
它会生成隐藏类型的输入字段......
<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}" />