ふわ

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時間