如何在rails中使用隐藏字段标记

时间:2017-10-04 12:43:28

标签: ruby-on-rails ruby

假设我有这个表单,但已经有一个变量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 %>

5 个答案:

答案 0 :(得分:4)

请参阅以下链接hidden_fieldhidden_field_tag

        <%= f.hidden_field :client_id, 1 %>
        <%= hidden_field_tag 'client_id', '1'  %>

使用时注意

   <%= f.hidden_field :client_id, 1 %>

它改为html

<input type="hidden" id="request_client_id" name="request[client_id]" value="1" />

当你使用

<%= hidden_field_tag 'client_id', '1'  %>

它改为html

   <input id="client_id" name="client_id" type="hidden" value="1"/>

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

希望它对你有用。

答案 1 :(得分:3)

尝试做:

<%= f.hidden_field :client_id, value: @assessment.client_id %>

正如您在上一个问题中所说,您在new行动中设置了@ assessment.client_id。

答案 2 :(得分:1)

答案 3 :(得分:1)

client_id应该是assessment_params的一部分吗?如果是这样,您可以将其附加到表单对象,即<%= f.hidden_field :client_id, value: @client.id

否则我认为你的标签应该通过,只是在评估参数哈希之外。

答案 4 :(得分:1)

<%= f.hidden_field :client_id, :value => @assessment.client_id %>