Railsで:id以外を指定する方法
<注意>
たけしがテキトーに書いていることなので
間違ってる可能性は大いにあり得る。
参考までに...
色々あるみたい。
# 以下は前提として
# hogeモデルにname属性がある
# という場合の話とする。
1. 普通に:nameとかつける
# 以下は前提として
# hogeモデルにname属性がある
# という場合の話とする。
1. 普通に:nameとかつける
get 'hoges/:name', to: 'hoges#show'
こうすれば、PATHはhogeモデルのnameカラムに。
コントローラでparams[:name]で取得できると思う。
2. resourcesとか使ってるときparam: :name
コントローラでparams[:name]で取得できると思う。
2. resourcesとか使ってるときparam: :name
resources :hoges, param: :name, only: [:show]
これでresourcesで自動で作られるPATHの:idの部分が
:nameになると思う。
同様にコントローラでparams[:name]で取得できるとハズ。
あれ?params[:hoge_name]だっけ?
わかんないや。今度ためす。
このパターンを使う場合はネストすることが多いと思う。
例えば
:nameになると思う。
同様にコントローラでparams[:name]で取得できるとハズ。
このパターンを使う場合はネストすることが多いと思う。
例えば
resource :hoges, param: :name do
resources :fugas
end
これなら多分、
hoges/名前/fugas/*
みたいなPATHになると思う。
ただ、上に書いたように
hoges/名前/fugas/*
みたいなPATHになると思う。
ただ、上に書いたように
resource :hoges, param: :name do
resources :fugas, param: :name
end
とした場合どうなるんだろう。
params[:hoge_name]でとれるんだったら問題ないが、
params[:name]だったらどうなるんだろう。
知らない(無責任)
まぁ、今度ためす。
試した。
ネストした場合は
hoge/:hoge_name/fuga/:name
になるようだ。
これならparams[:hoge_name]でhogeの名前、
params[:name]でfugaの名前がとれそう。
3. hogeモデルにto_paramメソッド
モデルに
params[:hoge_name]でとれるんだったら問題ないが、
params[:name]だったらどうなるんだろう。
試した。
ネストした場合は
hoge/:hoge_name/fuga/:name
になるようだ。
これならparams[:hoge_name]でhogeの名前、
params[:name]でfugaの名前がとれそう。
3. hogeモデルにto_paramメソッド
モデルに
def to_param
name
end
って書く。
ただ、これは余りオススメできないような...
routesには:idとかって表示されて
params[:id]でnameが取得できると思う。
意味わかんなくなりそう。
これをやる場合は1.か 2.も併用した方が良いだろうな。
やったことないけど...(無責任)
以上。
ルーティングって難しいね。
今回とは別件だけど、
・resourceとか
・namespaceとかscopeとか
・memberとかcollectionとか
まぁ色んなことができるから、試してみた方が良いな。
ドキュメント読めって話だけど、
なんか分かりにくいんだよね。
個人的には作って試す方が覚えられると思う。
最後にもう一度注意。
テキトーな事を書いてる恐れがあるから
全て信じないように!
詳しく人教えて! (← 自分で試すとか言ってるクセに)
ただ、これは余りオススメできないような...
routesには:idとかって表示されて
params[:id]でnameが取得できると思う。
意味わかんなくなりそう。
これをやる場合は1.か 2.も併用した方が良いだろうな。
やったことないけど...(無責任)
以上。
ルーティングって難しいね。
今回とは別件だけど、
・resourceとか
・namespaceとかscopeとか
・memberとかcollectionとか
まぁ色んなことができるから、試してみた方が良いな。
ドキュメント読めって話だけど、
なんか分かりにくいんだよね。
個人的には作って試す方が覚えられると思う。
最後にもう一度注意。
テキトーな事を書いてる恐れがあるから
全て信じないように!
詳しく人教えて! (← 自分で試すとか言ってるクセに)