Webアプリケーションを作っています。その中で検索フォームから送信されてくるデータを受け取って、該当する顧客を検索して
リスト表示するという機能を実装したいのですが、ストロングパラメータとの関係でどういう風にコードヲ記述すればいいか
わからずに困っております。(参考書に沿った形で記述していました。)
indexアクションに以下の通り記述していました。
app/controllers/staff/customers_controller.rb class Staff::CustomersController < Staff::Base def index @search_form = Staff::CustomerSearchForm.new(params[:search]) @customers = @search_form.search.page(params[:page]) end ・ ・ ・
このままアクセスするとForbiddenAttributesErrorが発生してしまうのでストロングパラメータに関する記述をしました。
app/controllers/staff/customers_controller.rb class Staff::CustomersController < Staff::Base def index @search_form = Staff::CustomerSearchForm.new(customer_params) @customers = @search_form.search.page(params[:page]) end ・ ・ ・ private def customer_params params.permit(customer: [ :family_name_kana, :given_name_kana, :birth_year, :birth_month, :birth_mday, :address_type, :prefecture, :city, :phone_number] ) end end
エラーは解消しページは表示されるのですが、検索機能が働いてくれないのでどうすればいいのかわからずに困っております。
たぶん、new(params[:search])の部分をnew(customer_params)に変えたことにより
(params[:search])でフォームの各フィールドに入力された値をハッシュとして取得できなくなってしまい
検索機能が上手く動かないのかな?と考えています。
そこで、検索機能はそのまま機能させ、そのうえストロングパラメータは有効にしたままにするためにはどうしたらいいのでしょうか?
どなたか教えてください。宜しくお願いします。
ログ表示の追記
Started GET "/customers?utf8=%E2%9C%93&search%5Bfamily_name_kana%5D=&search%5Bgi ven_name_kana%5D=%E3%82%B8%E3%83%AD%E3%82%A6&search%5Bbirth_year%5D=&search%5Bbi rth_month%5D=&search%5Bbirth_mday%5D=&search%5Bgender%5D=&search%5Baddress_type% 5D=&search%5Bprefecture%5D=&search%5Bcity%5D=&search%5Bpostal_code%5D=&search%5B phone_number%5D=&search%5Blast_four_digits%5D=&commit=%E6%A4%9C%E7%B4%A2" for 10 .0.2.2 at 2017-08-22 05:37:38 +0000 Processing by Staff::CustomersController#index as HTML Parameters: {"utf8"=>"✓", "search"=>{"family_name_kana"=>"", "given_name_kana" =>"ジロウ", "birth_year"=>"", "birth_month"=>"", "birth_mday"=>"", "gender"=>"", "address_type"=>"", "prefecture"=>"", "city"=>"", "postal_code"=>"", "phone_num ber"=>"", "last_four_digits"=>""}, "commit"=>"検索", "host"=>"chibi.example.com" } StaffMember Load (0.5ms) SELECT `staff_members`.* FROM `staff_members` WHERE `staff_members`.`id` = 11 LIMIT 1 Unpermitted parameters: :utf8, :search, :commit, :host {} Unpermitted parameters: :utf8, :search, :commit, :host Rendering staff/customers/index.html.erb within layouts/staff Rendered staff/customers/_search_form.html.erb (43.1ms) (0.8ms) SELECT COUNT(DISTINCT `customers`.`id`) FROM `customers` Customer Load (0.7ms) SELECT DISTINCT `customers`.* FROM `customers` ORDER B Y `customers`.`family_name_kana` ASC, `customers`.`given_name_kana` ASC LIMIT 10 OFFSET 0 Rendered staff/customers/index.html.erb within layouts/staff (105.4ms) Rendered staff/shared/_header.html.erb (1.0ms) Rendered shared/_footer.html.erb (0.5ms) Completed 200 OK in 207ms (Views: 198.3ms | ActiveRecord: 2.0ms) ^C- Gracefully stopping, waiting for requests to finish === puma shutdown: 2017-08-22 05:40:21 +0000 === - Goodbye! Exiting
と出ていました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/22 05:09
2017/08/22 05:12
2017/08/22 05:21
2017/08/22 05:27
2017/08/22 05:55
2017/08/22 06:10
2017/08/22 06:30