LoginSignup
1
4

More than 5 years have passed since last update.

LP用の素敵な素敵なroutesを作る(いずれのPathでも、同じshowアクションで処理する)

Posted at

やりたいこと

LP(ランディングページ)のような、LPディレクトリ内にいろんなファイル名でファイルを設置するんだけど、すべて処理は特になくてただHTMLをレンダリングしてあげたい。

/lp/hogehoge1.html
/lp/hogehoge2.html
/lp/hogehoge3.html
というアクセスをいずれも同じshowアクションでこなしたいなと。

何が困ったのか

LPを増やすば増やすほど、

lp_controller.rb
def hogehoge1; end
def hogehoge2; end
def hogehoge3; end
routes.rb
get 'hogehoge1', to: 'lp#hogehoge1'
get 'hogehoge2', to: 'lp#hogehoge2'
get 'hogehoge3', to: 'lp#hogehoge3'

とか書かないといけない。このように愚直に書けば実現できるけど、生産性低すぎ&面倒&忘れるわ、こんなん。
一発でできんかね?

方法

lp_controller.rb
def show
  render params[:page]
end
routes.rb
get 'lp/:page', to: 'lp#show'

解説

:page という部分が重要で、これがhogehoge1だろうがhogehoge2だろうがの部分になります。
controllerでは、渡ってきたhogehoge1やhogehoge2を解釈してrenderしてくれるので、適したhogehogeを返してくれます。

これでviewがhogehoge100とかになってもcontrollerやroutesをいじる必要なし!

メリット

  • hogehoge100とか大量になっても手間が増えない
  • viewさえ増やせばいい という単純明快な作りになる

余談

アクションが変わる場合はこれ使えません。
paramsを受け取る形になるので、何かしらparamsを要因とする処理は走らせることができるのでただのHTMLよりは処理に幅が出せます。

1
4
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
1
4