2011-07-06 14 views
2

Rails 2では、:controller paramに先行するスラッシュを追加して、ドメイン相対URLを取得することができます。このような:Rails 3ドメイン相対URL

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

しかし、Railsの3に、これはあなたが深くネストされたコントローラである場合を動作しないように見えます。たとえば、私がHome :: Fooにいると、それは動作します。私がホームにいる場合は:: 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" 

質問です:)(なurl_forを使用して、ドメインの相対リンクを得るための適切なRailsの3方法は何ですか?

答えて

1

投稿の安らかなパスを使用できませんか?あなたがでどこにいても '/ポスト' を生成する必要があり

routes.rbを

map.resources :posts 

anyview.html.erb

posts_path 

+0

この問題は、すべてのコントローラのroutes.rbを変更する必要があるということです。悪い解決策ではありませんが、 ':controller =>'の目的を打ち負かしてしまうのですか? –

+1

おそらく私は安らかな道を使うことができるかもしれませんが、a)私は自分のアプリとb)で落ち着いた道を使っていません。@ Yarのように、どこにでも更新しなければなりません。 – dodgeandburn