私はカテゴリモデルを持っていて、デフォルトの足場を使ってルーティングしていますresources :categories
。 /category/:id
から/category/:name
にパスを変更する方法があるかどうかは疑問です。 routes.rb
にPretty Paths in Rails
match "/categories/:name" => "categories#show"
資源線より上とやるために、コントローラでshow
アクションを変更:私は追加
@category = Category.find_by_name(params[:name])
それは動作しますが、そのようなlink_to some_category
としての「魔法のパスは」まだ:id
を使用しますフォーマット。
これを行う方法はありますか?これが悪い考えなら(レールが内部的に働く可能性があるため)、これを達成する別の方法がありますか?だから/categories/music
、例えば、/categories/3
の両方が使えますか?
ありがとうございました!私はこれについて忘れてしまった! –
万が一、カテゴリ内のスペースを扱う良い方法が分かっていますか?たとえば、カテゴリ「2つの単語」は、それをURLの「2つの単語」にしますか?それは私にto_param name.gsub( ""、 " - ")を実行させ、その後find_by_nameを実行するたびに同じことをしますか? params [:name] .gsub( " - "、 "")?しかし、どのように私はマッチパターンを書き直すだろうか? –
私は、私が思っていたよりもうまくいくはずのレールに[parameterize](http://rails.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001063)メソッドがあることがわかりました約。 –