2011-01-18 6 views
4

My rails 3 appは、Apache/mod_proxyサーバのバックグラウンドで実行されます。レールのアプリで接頭辞としてparamを使用するRails 3リソースルート

は私が抽象私の接頭辞に次いるのApacheで:site_pin

必須プレフィックスが存在する:

私の私のroutes.rbをで
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> 

私は、次のいます

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もっときれい?

答えて

17

scopeは非常に効果的です。でrake:routesを実行今

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

を、あなたは、次の出力が表示されます:あなたとあなたのroutes.rbを上記掲載何置き換え

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_pinparams[:site_pin]として利用できるようになります。

もちろん、他のリソースとルートをスコープブロックに追加することができます。それらのすべての接頭辞はsite/:site_pinです。

+2

あまりにも簡単です!ありがとうございました!!! –

+0

ようこそ。私の答えがあなたの問題を解決したら、答えを受け入れるように自由に感じてください。今後、他の質問に簡単に回答できるようになります。 – vonconrad

+0

ありがとうとても役に立ちます – Fivell

関連する問題