2010-06-28 5 views
48

Przeczytałem this, ale jestem nowy w RoR, więc mam problem z jego zrozumieniem. Używam formularza do utworzenia nowego rekordu żądania, a wszystkie zmienne, które muszę wysłać, istnieją już. Oto dane muszę wysłać (to jest w pętli DO):Jak używać hidden_field w form_for w Ruby on Rails?

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

Oto moja forma, która działa do tej pory, ale tylko wysłać wartości NULL za wszystko:

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

Jak zrobić Używam hidden_fields do wysyłania danych, które już mam? Dziękuje za przeczytanie.

+0

prostu próbowałem <% = f.hidden_field: user_id,: value => w [: calleeID]%>, ale wysłano NULL – ben

Odpowiedz

65

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 

Uwaga, kiedy używany

<%= f.hidden_field :some_column %> 

to zmienić html

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

i kiedy stosować

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

to zmienić html

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

To działało świetnie. Dzięki za tak szybką odpowiedź! – ben

30

można wysyłać niestandardową wartość jako ukrytego wejścia do modelu tak:

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