2010-06-28 61 views
48

Tôi đã đọc this, nhưng tôi mới tham gia RoR vì vậy tôi gặp một chút rắc rối khi hiểu nó. Tôi đang sử dụng một biểu mẫu để tạo một bản ghi yêu cầu mới và tất cả các biến mà tôi cần gửi đã tồn tại. Đây là dữ liệu tôi cần gửi (đây là trong một vòng lặp do):Làm cách nào để sử dụng hidden_field trong form_for trong Ruby on Rails?

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

Dưới đây là hình thức của tôi, mà làm việc cho đến nay, nhưng chỉ gửi các giá trị NULL cho tất cả mọi thứ:

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

thế nào Tôi sử dụng hidden_fields để gửi dữ liệu tôi đã có? Cảm ơn vì đã đọc.

+0

Chỉ cần cố gắng <% = f.hidden_field: user_id,: value => w [: calleeID]%> nhưng nó chỉ được gửi NULL – ben

Trả lời

65

Ref hidden_field hoặc 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 %> 

sau đó trong bộ điều khiển

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

Lưu ý khi bạn sử dụng

<%= f.hidden_field :some_column %> 

nó chuyển sang html

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

và khi bạn sử dụng

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

nó chuyển sang html

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

Điều này làm việc tuyệt vời. Cảm ơn câu trả lời nhanh như vậy! – ben

30

Bạn có thể gửi một giá trị tùy chỉnh như một đầu vào ẩn cho mô hình của bạn như thế:

<%= f.hidden_field :version, value: 12 %> 
Các vấn đề liên quan