2011-07-06 82 views
2

Rails 2,你可以添加一個前導斜槓到:控制器參數來獲得一個域相對的網址。像這樣的:Rails 3域相關網址

# anywhere in the app, Rails 2 
>> url_for(:controller => '/posts', :action => 'index') 
=> "/posts" 

然而,在的Rails 3,這似乎不起作用如果你是在一個深嵌套控制器。例如,如果我在Home :: Foo中,它可以工作。如果我在首頁::富::酒吧是,這是行不通的:

# in Home, works 
>> url_for(:controller => '/posts', :action => 'index') 
=> "/posts" 

# in Home::Foo, works 
>> url_for(:controller => '/posts', :action => 'index') 
=> "/posts" 

# in Home::Foo::Bar, does not work 
>> url_for(:controller => '/posts', :action => 'index') 
=> "home//posts" 

的問題是:什麼是正確的Rails讓使用url_for相對域鏈接()的3路?

回答

1

難道你不能只使用帖子的寧靜路徑?

的routes.rb

map.resources :posts 

anyview.html.erb

posts_path 

這應該產生 '/帖' 無論你在哪裏在。

+0

問題在於你需要爲每個控制器修改routes.rb ......這不是一個壞的解決方案,但它有點挫敗了':controller =>'的目的,不是嗎? –

+1

也許我可以使用寧靜的路徑,但a)我沒有在我的應用程序中使用寧靜的路徑,b)像@Yar說的那樣,我必須隨處更新。 – dodgeandburn