QA@IT

urlをid + nameのようにしたときの質問

1117 PV

Railsでurlを

/samples/id-name

で表示できるようにしたくて、models/sample.rbに

def to_param
    "#{id} #{name}".parameterize
end

を記述したのですが、これだと、

/samples/id

でもアクセスすることができてしまうので、

/samples/id

でアクセスされたら、404を表示する方法を教えていただけないでしょうか?

よろしくお願いします。

  • 質問の趣旨とは違いますが、404のかわりに301を使ったほうがいいかもしれません。 -

回答

resources :samples, constraints: { id: /\d+-[a-z]+/ }

でどうでしょうか? idのみだと ActionController::RoutingError になるので、通常の設定だと production 環境では 404 扱いになります。

編集 履歴 (0)
  • 参考にしたところ無事やりたかったことができました!
    ありがとうございます!
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。