Wie verwende ich hidden_field in einem form_for in Ruby on Rails?

83

Ich habe gelesen , dieses , aber ich bin neu in RoR so dass ich ein wenig Mühe, es zu verstehen. Ich verwende ein Formular, um einen neuen Anforderungsdatensatz zu erstellen, und alle Variablen, die ich senden muss, sind bereits vorhanden. Hier sind die Daten, die ich senden muss (dies ist in einer do-Schleife):

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

Hier ist mein Formular, das bisher funktioniert, aber nur NULL-Werte für alles sendet:

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

Wie verwende ich hidden_fields, um die Daten zu senden, die ich bereits habe? Danke fürs Lesen.

ben
quelle
Ich habe gerade versucht <% = f.hidden_field: user_id ,: value => w [: calleeID]%>, aber es hat gerade NULL gesendet
ben

Antworten:

104

Ref hidden_field oder 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 %>

dann in der Steuerung

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

Beachten Sie, wann Sie verwendet haben

   <%= f.hidden_field :some_column %>

es ändert sich zu HTML

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

und wenn du benutzt hast

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

es ändert sich zu HTML

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

Sie können einen benutzerdefinierten Wert als versteckte Eingabe für Ihr Modell wie folgt senden:

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

Wo value: 12ist nur eine Demo, aber Sie können jeden Wert übergeben, den Sie benötigen.

Bruno Paulino
quelle