カスタムURLを設定できないようです。すべてのRESTfulルートはうまく動作しますが、私はモデル(単純な4文字のランダムな文字列)で作成し、並べ替えの "パーマリンク"として機能する既存のルートに/:unique_url
を追加するだけではわかりません。Ruby on Rails 3.1でカスタムルートを作成する際に問題が発生する
routes.rbを
resources :treks
match ':unique_url' => 'treks#mobile'
コントローラ
.
.
def mobile
@trek = trek.find(params[:id])
end
私は既存のリソース上のカスタムアクションを定義しようとしているので、これはありますか?リソースを持つコントローラと同じコントローラ上にカスタムメソッドを作成することはできませんか?私はそれが正常に動作しますroutes.rb
match 'treks/:id/:unique_url' => treks#mobile
に変更するが、私はちょうどURLは単にそれがfind_by_[parameter]
ように思える/:unique_url
更新になりたいところで
は、移動するための方法です...
私はコンソールでプレーしてきたと私はどんな方法が前方に来てもらうように見えることはできません...私は例えばTrek.last.fullname
を実行することができますが、@trek = Trek.last
を実行することはできません...そして呼び出す...例えば、。すべての手掛かりはなぜですか?私はこれが私の問題だと思う。
あなた 'mobile'方法は' paramsは使用しています:「'しかし、あなたはドン[ID]をあなたのルートに ':id'があります。モデルに 'find_by_unique_url'メソッドを作成し(まだ持っていない場合)、' mobile'メソッドでそれを使う必要があります。 –
ありがとう、どこでこのメソッドを作成しますか? – pruett
'unique_url'フィールドを持っていれば、既にそれを持っています。レールコンソールでは 'Trek.find_by_unique_url(url)'を実行できます。ここで 'url'は一致するunique_urlであり、結果が表示されます。 –