1
私は一括編集フォームを持っています。ユーザーは複数の既存のレコードを選択します。そして、新しいレコードフォームを表示するボタンをクリックします(すべての値は空です)。ユーザーは属性ごとにデータを入力し、submitをクリックすると、選択したすべてのレコードが指定された値で更新されます。空でない属性のみを更新する
paramsをサーバーに送信ハッシュは次のようになります。
{
'lead_ids' => [2,4]
'lead' => {
'name' => 'donato',
'email' => "",
'phone' => ""
}
}
したがって、この例では、name属性だけがこれは2と4
のIDでリードするために更新する必要があります私が思いついたのは:
lead = Lead.new lead_params
leads = Lead.where(id: params[:lead_ids])
changed_attrs = lead_params.select {|param| !param.values.first.blank?}
leads.each do |lead|
lead.update_attributes changed_attrs
end
これを行うにはさらにRailsyの方法がありますか?
'params'処理でこれを抜け出すために少しクリーナーかもしれませんが、それは正しい考えです。 – tadman
'hash = params [:lead]'、そうでなければこれが行く方法です – GoGoCarl
@GoGoCarl:良いキャッチです。 – MTarantini