LoginSignup
17
16

More than 5 years have passed since last update.

【Rails】Controllerのactionが引数にとるparamのデフォ値設定【初心者tips】

Posted at

知ってるとDRYに書けるよねっていうtips。

actionの引数のデフォ値をおく

def some_action
  if param[:hoge].present?
    @hoge = param[:hoge]
  else
    @hoge = "default_hoge"
  end
end

っていう書き方しなくてもいいよっていう話
こうかけ↓DRY

def some_action(hoge="default_hoge")
  @hoge = hoge
end

こうすると、param[:hoge]が存在する場合は、

  hoge = param[:hoge]

param[:hoge]がnilになる場合に

  hoge = "default_hoge"

になる。

ちなみに

formで、こんな感じでリクエストおくる場合

  form_for(hoge_new, url:~~)

submitを押すと、paramへの入り方は
hogeのmodel名をhoge_modelとすると、

params: {~~, "hoge_model" => {hogeのattributesたち}}

てな感じで、formのsubmitのparamのキーにはmodel名が入る。
なので、そいつのデフォルト値を上みたいに定めたい時は、

def some_action(hoge_model="default_hoge_model")
  @hoge = hoge_model
end

こんな感じになる。

知ってると、DRYにかけるよというtipsでした。

17
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16