【问题标题】:Rails Strong Parameters - Array of Hashes - Multiple Records in Single FormRails 强参数 - 哈希数组 - 单一形式的多个记录
【发布时间】:2019-02-02 20:41:05
【问题描述】:

我正在尝试在 Rail 5.2 应用程序中以单个表单提交多条记录。我没有使用接受另一个模型的嵌套属性,因为它似乎总是引入先前创建的条目。条目一经创建便无法编辑。

<%= form_tag entry_details_path do %>
  <% @entries.each do |entry| %>
    <%= fields_for 'entries[]', entry do |e| %>
      <div class="field">
        <%= e.label :user_account_id %><br>
        <%= e.text_field :user_account_id %>
      </div>
      <div class="field">
        <%= e.label :amount %><br>
        <%= e.text_field :amount %>
      </div>
     <% end %>
   <% end %>
   <div class="actions">
     <%= submit_tag %>
   </div>
 <% end %>

参数看起来像:

"entries"=>[<ActionController::Parameters {"user_account_id"=>"3", "amount"=>"55"} permitted: false>, <ActionController::Parameters {"user_account_id"=>"4", "amount"=>"65"} permitted: false>]

我想将整个哈希数组传递给一个创建,例如:

def create_multiple_entries
  @entries = Entries.create(multiple_entries_params)
  @entries.reject! { |e| e.errors.empty? }
  if @entries.empty?
    redirect_to entries_path
  else
   render 'new'
 end
end

如果手动输入数组,上述方法有效。我的挑战是强大的参数(我认为)。现在我有:

def leave_accrual_details_params
  params.require(:entries).permit([:user_account_id, :amount])
end

这给了我以下错误:

!! #<NoMethodError: undefined method `permit' for #<Array:0x00007fee4014ec78>>

【问题讨论】:

    标签: ruby-on-rails forms strong-parameters


    【解决方案1】:

    为 Rails 5 尝试以下操作:

    def leave_accrual_details_params
      params.require(:entries).map do |p|
        p.permit(:user_account_id, :amount)
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多