rails - what exactly does hidden_field and hidden_field_tag do?

前端 未结 2 888
旧巷少年郎
旧巷少年郎 2020-12-14 19:12

I read through the techy definition of hidden_fields, but am not sure what it really does. My understanding is that it allows you to pass in an attribute for c

相关标签:
2条回答
  • 2020-12-14 19:35

    It would generate a hidden type of input field...

    <input type="hidden" />

    This is a way to store information that you want submitted with the form without having to have a visible field.

    From the documentation:

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

    hidden_field_tag is meant to be used without a model whereas hidden_field is meant to be used in conjunction with a form_for call and a model.

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

    0 讨论(0)
  • 2020-12-14 19:37

    Both of those methods are helpers to create an HTML input tag of type "hidden", and yes, those are used to add parameters to a request (typically a form POST). Really the parameter can be any piece of information you want to send along with a request. Be careful, though, as hidden fields are easily tampered with.

    Here's an example that will send a user id in a hidden field

    # 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
    

    While you can pass things such as user_id's like this, I find that the need for it is rare. If a user_id is always required for a given situation you might consider using nested routes http://guides.rubyonrails.org/routing.html#nested-resources.

    0 讨论(0)
提交回复
热议问题