アプリ制作
実現したいこと
- コントローラでクエリパラメータを取得したい
つまづいたところと解決法
- コントローラで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>'
よくよく見るとデバッガの位置を間違えていた。
- ルーティングで`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>
プロを目指す人のためのRuby入門
- 7章クラスの作成を理解する
- 7.1 イントロダクション
- 7.2 オブジェクト指向プログラミングの基礎知識
- 7.3 クラスの定義
- 7.4 例題: 改札機プログラムの作成