在Rails 3中替换资源的默认路由

我有一个像这样定义的资源:
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进行更新操作时,我希望某些事情发生,但我不想要求授权这样做,我不想让根据控制器名称轻松猜测网址和简单的低 - 编号的ids。 如何完全替换rails给出的默认路由?     
已邀请:
resources :referrals, :except => [:show, :edit, :destroy, :update]
match "/whatever_you_want/:variable_here" => "referrals#updated", :as=> the_link, :via=> :put
然后在您的控制器中,您将访问该参数
params[:variable_here]
这里的参数是你想要在db中比较的任何东西,并且路径将像这样创建:
the_link_path
the_link_url
:via部分将约束每个HTTP方法的路径,因此只有put请求匹配 更多信息在这里 http://guides.rubyonrails.org/routing.html     

要回复问题请先登录注册