【问题标题】:How to add a hidden field to form_with?如何向 form_with 添加隐藏字段?
【发布时间】:2021-02-08 12:08:30
【问题描述】:

我正在尝试将隐藏字段添加到 form_with

这里有 3 次尝试(以及结果/错误消息)

第一次尝试

发件人:https://guides.rubyonrails.org/form_helpers.html

所以我试试:

<%= form_with(model: @message, method: :post) do |f| %> 
<%= f.label :body %> 
<%= f.text_area :body %> 
<%= f.hidden_field_tag :user_id, current_user.id %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>

第二次尝试

发件人:https://api.rubyonrails.org/v6.0.3/classes/ActionView/Helpers/FormHelper.html#method-i-hidden_field

示例:hidden_​​field(:signup, :pass_confirm)

所以我试试

<%= f.label :body %> 
<%= f.text_area :body %> 
<%= f.hidden_field :user_id, current_user.id %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>

但是

第三次尝试

这比其他两次尝试更进一步,因为至少显示视图加载而不是出错。

<%= form_with(model: @message, method: :post) do |f| %> 
<%= f.label :body %> 
<%= f.text_area :body %> 
<%= f.hidden_field user_id: current_user.id %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>

但是提交的参数是

Unpermitted parameter: :{:user_id=>21}

即它包含一些不应该包含的额外标点符号(我认为它已被制成嵌套哈希或其他东西?)

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6 form-with


    【解决方案1】:

    你有一些错误语法。如果您想使用 :value 参数将值传递给隐藏字段。

    <%= f.hidden_field :user_id, :value => current_user.id %>
    

    【讨论】:

      【解决方案2】:

      这是有效的&lt;%= f.hidden_field :user_id, value: current_user.id %&gt;

      <%= form_with(model: @message, method: :post) do |f| %> 
      <%= f.label :body %> 
      <%= f.text_area :body %> 
      <%= f.hidden_field :user_id, value: current_user.id %>
      <%= f.submit "Send", class: "btn btn-primary" %>
      <% end %>
      

      在哪里

      • :user_id是参数名(改成你的参数名)
      • value: 只是告诉 form_with 下一个值(即不要更改)
      • current_user.id 是实际值(更改为您的值)

      基于this的回答

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-04
        • 1970-01-01
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多