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}" />