如何在Ruby on Rails中的form_for中使用hidden_​​field?

ben*_*ben 71 forms ruby-on-rails hidden-field

我已经读过这篇文章,但我是RoR的新手,所以我在理解它时遇到了一些麻烦.我正在使用表单来创建新的请求记录,并且我需要发送的所有变量都已存在.这是我需要发送的数据(这是一个do循环):

:user_id => w[:requesteeID]
:requesteeName => current_user.name
:requesteeEmail => current_user.email
:info => e
Run Code Online (Sandbox Code Playgroud)

这是我的表单,到目前为止工作,但只为所有内容发送NULL值:

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

如何使用hidden_​​fields发送我已有的数据?谢谢阅读.

Sal*_*lil 91

Ref 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 %>
Run Code Online (Sandbox Code Playgroud)

然后在控制器中

 params[:selected]="none"
 params[:request][:some_column] = request.some_column
Run Code Online (Sandbox Code Playgroud)

使用时请注意

   <%= f.hidden_field :some_column %>
Run Code Online (Sandbox Code Playgroud)

它改为html

<input type="hidden" id="request_some_column" name="request[some_column]" value="#{@request.some_column}" />
Run Code Online (Sandbox Code Playgroud)

当你用的时候

<%= hidden_field_tag 'selected', 'none'  %>
Run Code Online (Sandbox Code Playgroud)

它改为html

   <input id="selected" name="selected" type="hidden" value="none"/>
Run Code Online (Sandbox Code Playgroud)


Bru*_*ino 67

您可以将自定义值作为模型的隐藏输入发送,如下所示:

<%= f.hidden_field :your_model_field_name, value: 12 %>
Run Code Online (Sandbox Code Playgroud)


Pro*_*ton 5

详细阐述布鲁诺·保利诺的答案

在开发 Rails 6 应用程序时,我也有同样的担忧。

我有一个书籍表单,但我需要将当前用户的 ID传递到将以隐藏方式创建的每本书的表单中。

我最初的表单字段是这样的:

<div class="field">
  <%= form.label :user_id %>
  <%= form.text_field :user_id %>
</div>
Run Code Online (Sandbox Code Playgroud)

我必须使用以下方法将其修改为:

<div class="field">
  <%= form.hidden_field :model_field_name, value: field_value %>
</div>
Run Code Online (Sandbox Code Playgroud)

所以我之后就这样了:

<div class="field">
  <%= form.hidden_field :user_id, value: current_user.id %>
</div>
Run Code Online (Sandbox Code Playgroud)