2021年04月04日に参加
学習履歴詳細
クエリパラメータをコントローラで取得する
コントローラでbinding.pryを起動してpramasにアクセスしようとしたが、NameError: undefined local variable or method `params'と出てしまう。
クエリパラメータの書き方におかしいところがないか、クエリパラメータへのアクセスの仕方を英語で検索し、記事を4つほど読み込んだ。
ふとbinding.pryの位置がおかしいのかもと頭に浮かび、試してみたところ解決した.。
アプリ制作
実現したいこと
- コントローラでクエリパラメータを取得したい
# リクエスト /statistics?column=activity&date_begin=2019-09-12&date_end=2019-09-21 # routing get 'statistics' to: 'statistics#report' # app/controllers/statistics_controller class StatisticsController < ApplicationController #省略 binding.pry #省略 def report #省略 end end # paramsを参照できない [1] pry(StatisticsController)> params NameError: undefined local variable or method `params' for StatisticsController:Classfrom (pry):1:in `<class:StatisticsController>'
- request.query_parametersでは取得できない
- Rails 5: unable to retrieve hash values from parameter
URIでのクエリパラメータの書き方合っているか?
- よくよく見るとデバッガの位置を間違えていた。
ルーティングで`statistics => statistics#reportなので、reportメソッドの名前空間からでないとparamsにアクセスできない?
ここらへんの仕組みが理解できていない。
# app/controllers/statistics_controller ; (省略) def report binding.pry #省略 end # paramsを取得できた [1] pry(#<StatisticsController>)> params => <ActionController::Parameters {"column"=>"activity", "date_begin"=>"2019-09-12", "date_end"=>"2019-09-21", "controller"=>"statistics", "action"=>"report"} permitted: false>
- 次は、取得したparamsをStrongParameterに通す
Linux
Ruby
2019年09月25日(水)
5.5時間