Railsで複数行の一括更新のリンク

むむ、、、

2008-06-24 Railsで明細行の一括登録・更新
http://d.hatena.ne.jp/hiro_nemu/20080624/1214279300

Rails4: fields_forとstrong_parametersで複数レコードの更新に対応する方法
2014/06/10 13:15
http://319ring.net/blog/archives/2591/

Railsのフォームで複数レコードを一括更新 2013
http://morizyun.github.io/blog/rails-form-update-many-records/

Ruby on Railsあれこれ/複数従業員情報の一括更新
http://winter-tail.sakura.ne.jp/pukiwiki/index.php?Ruby%20on%20Rails%A4%A2%A4%EC%A4%B3%A4%EC%2F%CA%A3%BF%F4%BD%BE%B6%C8%B0%F7%BE%F0%CA%F3%A4%CE%B0%EC%B3%E7%B9%B9%BF%B7

2012-10-26 複数レコードを一括して更新する
http://d.hatena.ne.jp/zucay/20121026/1351219598

Ruby on Rails モデル開発 複数のレコードをまとめて更新する update_all
2015-09-30 13:13:29
http://blog.goo.ne.jp/nakajima_notec/e/27cb204d1352171e90a2d9d00f2a8ab8

2. 一括登録フォームの実装
http://rails.densan-labs.net/form/bulk_registration_form.html

Rails4、fields_forを使って一括更新する処理のベストプラクティスは何だろう
http://j-caw.co.jp/blog/?p=1590

20110422 rails2.3での一括更新画面の作り方
http://rochefort.hatenablog.com/entry/20110422/p1

Railsで更新も編集も削除も、全部indexページでやりたい
RubyRuby11250RailsRails7324
jacoyutoriusが2015/01/29
http://qiita.com/jacoyutorius/items/ea0673fe30cfe7cdac8f

———–

Editing Multiple Records in Rails  Apr 15, 2011 (Rails3)
http://anthonylewis.com/2011/04/15/editing-multiple-records-in-rails/
コードものっているが、Rails3のコードで、そのままやると、おそらく、StrongPrameterの関係で、ForbiddenAttributesError が出てしまう。
https://github.com/anthonylewis/multi_edit

→下記の、魔法のことば「params.permit!」を入れたら、動いた!セキュリティ的には何かしらの問題があるのでしょうが、とりあえず、動いてとってもうれしい!

Rails4.1で『改訂新版 基礎Ruby on Rails』のコードで「ActiveModel::ForbiddenAttributesError」の対処
chobi9999に投稿(に編集)
http://qiita.com/chobi9999/items/961aaea6bbc9e04d7abc

image

image

●やったこと(抜粋)

(1)

rails g scaffold User first_name:string last_name:string email:string
rake db:migrate

(2)config/routes.rb

resources :users の前に、

match ‘users/all/edit’ => ‘users#edit_all’, :as => :edit_all, :via => :get
match ‘users/all’ => ‘users#update_all’, :as => :update_all, :via => :put

を記載。

image

(3)app/controllers/users_controller.rb

  # GET /users/all/edit
  def edit_all
    @users = User.all
  end
  
  # PUT /users/all
  def update_all
    params.permit!
    params['user'].keys.each do |id|
      @user = User.find(id.to_i)
      @user.update_attributes(params['user'][id])
    end
    redirect_to(users_url)
  end

を記載。(params.permit! はセキュリティ的に、、、でも、ちゃんとしたやり方わかりません!)

image

(4)app/views/users/ フォルダの中に、edit_all.html.erb を作成し、以下のように記載。

<%= form_for :user, :url => update_all_path, :html => { :method => :put } do %>
  <table>
    <tr>
      <th>First Name</th>
      <th>Last Name</th>
      <th>E-Mail</th>
    </tr>
    <% @users.each do |user| %>
      <%= fields_for “user[]”, user do |user_fields| %>
    <tr>
      <td><%= user_fields.text_field :first_name %></td>
      <td><%= user_fields.text_field :last_name %></td>
      <td><%= user_fields.email_field :email %></td>
    </tr>
      <% end %>
    <% end %>
  </table>

  <div class=”actions”>
    <%= submit_tag %>
  </div>
<% end %>

image

(5)app/views/users/index.html.erb の一番下にリンクを追加。

<%= link_to ‘Edit Users’, edit_all_path %>

image

これでできるはずだが、params.permit! のところをなんとかしたい。

関連記事
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする