rails-что именно делает скрытое поле и скрытый тег поля?
Я прочитал техническое определение hidden_fields
, но я не уверен, что это действительно. Я понимаю, что он позволяет передавать атрибут для определенных параметров. Например, если у вас есть богатая модель соединения, вы можете использовать hidden_field
чтобы назначить user_id атрибуту модели соединения для пользователя. Это верно?
Если да, то было бы лучше сделать это в форме или контроллер?
2 ответов
оба этих метода являются помощниками для создания входного тега HTML типа "hidden", и да, они используются для добавления параметров в запрос (обычно сообщение формы). Действительно параметра может быть любая информация, которую вы хотите отправить вместе с запросом. Однако будьте осторожны, так как скрытые поля легко подделать.
вот пример, который отправит идентификатор пользователя в скрытое поле
# 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.
он будет генерировать скрытый тип поля ввода...
<input type="hidden" />
это способ хранения информации, которую вы хотите отправить с формой без необходимости иметь видимое поле.
С документация:
hidden_field_tag 'tags_list'
генерирует...<input id="tags_list" name="tags_list" type="hidden" />
hidden_field_tag
предназначен для использования без модели, тогда как hidden_field
предназначен для использования совместно с form_for
вызов и a модель.
hidden_field(:signup, :pass_confirm)
генерирует...<input type="hidden" id="signup_pass_confirm" name="signup[pass_confirm]" value="#{@signup.pass_confirm}" />