gpt4 book ai didi

ruby-on-rails - 以参数为前缀的 Rails 3 资源路由

转载 作者:行者123 更新时间:2023-12-03 18:27:33 25 4
gpt4 key购买 nike

我的 rails 3 应用程序 的后台运行Apache/mod_proxy 服务器。

在 rails 应用程序中存在一个 强制前缀 :site_pin
在 Apache 中,我有以下内容来抽象我的前缀:

ServerName example.com

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://localhost:3000/site/example/
ProxyPassReverse / http://localhost:3000/site/example/

<Location />
Order allow,deny
Allow from all
</Location>

在我的 routes.rb 中,我有以下内容:
resources :products

#RESTful fix
match 'site/:site_pin/:controller/', :action => 'index', :via => [:get]
match 'site/:site_pin/:controller/new', :action => 'new', :via => [:get]
match 'site/:site_pin/:controller/', :action => 'create', :via => [:post]
match 'site/:site_pin/:controller/:id', :action => 'show', :via => [:get]
match 'site/:site_pin/:controller/:id/edit', :action => 'edit', :via => [:get]
match 'site/:site_pin/:controller/:id', :action => 'update', :via => [:put]
match 'site/:site_pin/:controller/:id', :action => 'destroy', :via => [:delete]

以这种方式一切正常,但是有人有更好的解决方案来删除此修复程序并使 routes.rb 更干净吗?

最佳答案

scope这将非常有效。将您上面在 routes.rb 中发布的内容替换为:

scope 'site/:site_pin' do
resources :products
end

现在,运行 rake:routes在,您应该会看到以下输出:
    products GET    /site/:site_pin/products(.:format)             {:controller=>"products", :action=>"index"}
POST /site/:site_pin/products(.:format) {:controller=>"products", :action=>"create"}
new_product GET /site/:site_pin/products/new(.:format) {:controller=>"products", :action=>"new"}
edit_product GET /site/:site_pin/products/:id/edit(.:format) {:controller=>"products", :action=>"edit"}
product GET /site/:site_pin/products/:id(.:format) {:controller=>"products", :action=>"show"}
PUT /site/:site_pin/products/:id(.:format) {:controller=>"products", :action=>"update"}
DELETE /site/:site_pin/products/:id(.:format) {:controller=>"products", :action=>"destroy"}
:site_pin将作为 params[:site_pin] 提供.

自然地,您将能够将其他资源和路由添加到作用域块中;所有这些都将以 site/:site_pin 为前缀.

关于ruby-on-rails - 以参数为前缀的 Rails 3 资源路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4728060/

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