Как использовать hidden_field в form_for в Ruby on Rails?


83

Я читал это , но я новичок в RoR, поэтому у меня небольшие проблемы с его пониманием. Я использую форму для создания новой записи запроса, и все переменные, которые мне нужно отправить, уже существуют. Вот данные, которые мне нужно отправить (это в цикле do):

:user_id => w[:requesteeID]
:requesteeName => current_user.name
:requesteeEmail => current_user.email
:info => e

Вот моя форма, которая пока работает, но отправляет только значения NULL для всего:

<% form_for(:request, :url => requests_path) do |f| %>
    <div class="actions">
        <%= f.submit e %>
    </div>
<% end %>

Как использовать hidden_fields для отправки данных, которые у меня уже есть? Спасибо за прочтение.


Просто попробовал <% = f.hidden_field: user_id,: value => w [: calleeID]%>, но он просто отправил NULL
Бен

Ответы:


104

Ссылка hidden_field или hidden_field_tag

<% form_for(:request, :url => requests_path) do |f| %>
    <div class="actions">
        <%= f.hidden_field :some_column %>
        <%= hidden_field_tag 'selected', 'none'  %>
        <%= f.submit e %>
    </div>
<% end %>

затем в контроллере

 params[:selected]="none"
 params[:request][:some_column] = request.some_column

Обратите внимание, когда вы использовали

   <%= f.hidden_field :some_column %>

он изменится на html

<input type="hidden" id="request_some_column" name="request[some_column]" value="#{@request.some_column}" />

и когда вы использовали

<%= hidden_field_tag 'selected', 'none'  %>

он изменится на html

   <input id="selected" name="selected" type="hidden" value="none"/>

78

Вы можете отправить собственное значение в качестве скрытого ввода для вашей модели следующим образом:

<%= f.hidden_field :your_model_field_name, value: 12 %>

Где value: 12просто демонстрация, но вы можете передать любое нужное вам значение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.