5

次のように定義されたリソースがあります。

resources :referrals, :except => [:show, :edit, :destroy]

Railsが生成するデフォルトルート、特に更新アクション用のルートを(名前付きルートを追加するだけでなく)置き換えたいと思います。

これが私のレーキルートです:

referrals    GET  /referrals(.:format)     {:action=>"index", :controller=>"referrals"}
             POST /referrals(.:format)     {:action=>"create", :controller=>"referrals"}
new_referral GET  /referrals/new(.:format) {:action=>"new", :controller=>"referrals"}
referral     PUT  /referrals/:id(.:format) {:action=>"update", :controller=>"referrals"}
share             /share(.:format)         {:controller=>"referrals", :action=>"new"}
special           /special(.:format)       {:controller=>"referrals", :action=>"index"}
thanks            /thanks(.:format)        {:controller=>"pages", :action=>"thanks"}
                  /:shortlink(.:format)    {:controller=>"referrals", :action=>"update"}
                  /:linktext(.:format)     {:controller=>"referrals", :action=>"update"}
root              /(.:format)              {:controller=>"pages", :action=>"home"}

私はどちらかが欲しいです

/:shortlink(.:format)

また

/:linktext(.:format)

更新アクションをヒットします

/referrals/:id(.:format)

これは、パスワード以外の「セキュリティ」の形式を実装することです。PUT が更新アクションに移行するときに、特定のことが発生するようにしたいのですが、これを行うために承認を要求したくありません。また、コントローラー名と単純な低に基づいて URL を簡単に推測できるようにしたくありません。番号付き ID。

レールによって与えられたデフォルトルートを完全に置き換えるにはどうすればよいですか?

4

1 に答える 1

2

resources :referrals, :except => [:show, :edit, :destroy, :update]

match "/whatever_you_want/:variable_here" => "referrals#updated", :as=> the_link, :via=> :put

次に、コントローラーでパラメーターにアクセスします。

params[:variable_here]

ここで、paramはデータベースで比較したいものであり、パスは次のように作成されます。

the_link_pathまたthe_link_url

:via部分は、HTTPメソッドごとにパスを制約するため、putリクエストのみが一致します

詳細はこちら http://guides.rubyonrails.org/routing.html

于 2012-03-29T19:37:03.957 に答える