Jak używać hidden_field w form_for w Ruby on Rails?

83

Czytałem to , ale jestem nowy w RoR, więc mam trochę problemów ze zrozumieniem. Używam formularza, aby utworzyć nowy rekord żądania, a wszystkie zmienne, które muszę wysłać, już istnieją. Oto dane, które muszę wysłać (jest to pętla do):

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

Oto mój formularz, który działa do tej pory, ale wysyła tylko wartości NULL dla wszystkiego:

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

Jak mogę użyć hidden_fields do wysłania danych, które już mam? Dziękuje za przeczytanie.

ben
źródło
Właśnie próbowałem <% = f.hidden_field: user_id,: value => w [: calleeID]%>, ale wysłano NULL
ben

Odpowiedzi:

104

Ref. Hidden_field lub 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 %>

następnie w kontrolerze

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

Zwróć uwagę, kiedy użyłeś

   <%= f.hidden_field :some_column %>

to zmienić na html

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

i kiedy używałeś

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

to zmienić na html

   <input id="selected" name="selected" type="hidden" value="none"/>
Salil
źródło
78

Możesz wysłać niestandardową wartość jako ukryte dane wejściowe dla swojego modelu w następujący sposób:

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

Gdzie value: 12jest tylko demo, ale możesz przekazać dowolną wartość, której potrzebujesz.

Bruno Paulino
źródło