2010-06-28 62 views
48

我读过this,但我是RoR的新手,所以我在理解时遇到了一些麻烦。我正在使用表单来创建一个新的请求记录,并且我需要发送的所有变量已经存在。这里是我需要发送的数据(这是一个do循环):如何在Ruby on Rails的form_for中使用hidden_​​field?

: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发送我已有的数据?谢谢阅读。

+0

刚试过<%= f.hidden_​​field:user_id,:value => w [:calleeID]%>但它只是发送NULL – ben 2010-06-28 11:41:38

回答

65

参考hidden_fieldhidden_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 %> 

然后控制器,当你使用

<%= f.hidden_field :some_column %> 

它更改为HTML

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

<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"/> 
+0

这很好。感谢这样一个快速的答案! – ben 2010-06-28 13:13:59

30

您可以将自定义值作为隐藏输入你的模型像:

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