如何在Rails中使用隐藏字段标签

Rud*_*iel 0 ruby ruby-on-rails

说我有这种形式,但已经有一个要传递给控制器​​的变量client_id。看来我需要使用hidden_​​field_tag。我尝试过,但是我认为我的语法不正确。知道我在做什么错吗?谢谢

<%= form_for(@assessment) do |f| %>
  <div class="field">
    <%= f.label :weight %><br>
    <%= f.text_field :weight %>
  </div>
  <div class="field">
    <%= f.label :heartrate %><br>
    <%= f.text_field :heartrate %>
  </div>
  <div class="field">
    <%= f.label :bodyfat %><br>
    <%= f.text_field :bodyfat %>
  </div>

    <%= hidden_field_tag :client_id, @client.id %>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

jvi*_*ian 8

尝试做:

<%= f.hidden_field :client_id, value: @assessment.client_id %>
Run Code Online (Sandbox Code Playgroud)

因为,就像您之前的问题一样,您在new操作中设置了 @assessment.client_id 。


Aks*_*ade 6

请参考以下链接hidden_​​fieldhidden_​​field_tag

        <%= f.hidden_field :client_id, 1 %>
        <%= hidden_field_tag 'client_id', '1'  %>
Run Code Online (Sandbox Code Playgroud)

使用时请注意

   <%= f.hidden_field :client_id, 1 %>
Run Code Online (Sandbox Code Playgroud)

它更改为html

<input type="hidden" id="request_client_id" name="request[client_id]" value="1" />
Run Code Online (Sandbox Code Playgroud)

当你使用

<%= hidden_field_tag 'client_id', '1'  %>
Run Code Online (Sandbox Code Playgroud)

它更改为html

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

所以,我认为您应该在这里使用 <%= f.hidden_field :client_id, @client.id %>

希望它对您有用。