gpt4 book ai didi

ruby-on-rails-3 - 在 Rails 3 中替换资源的默认路由

转载 作者:行者123 更新时间:2023-12-04 07:11:52 25 4
gpt4 key购买 nike

我有一个这样定义的资源:

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 进入更新操作时,我希望某些事情发生,但我不想要求授权来执行此操作,并且我不想允许根据 Controller 名称和简单的低级轻松猜测 url-编号的 id。

我怎样才能完全 替换 rails 给出的默认路由?

最佳答案

resources :referrals, :except => [:show, :edit, :destroy, :update]match "/whatever_you_want/:variable_here" => "referrals#updated", :as=> the_link, :via=> :put
然后在您的 Controller 中,您将访问参数
params[:variable_here]
这里的参数是你想在数据库中比较的任何东西,路径将像这样创建:
the_link_paththe_link_url
:via 部分将限制每个 HTTP 方法的路径,因此只有 put 请求会匹配

更多信息在这里
http://guides.rubyonrails.org/routing.html

关于ruby-on-rails-3 - 在 Rails 3 中替换资源的默认路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5491199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com