2011-03-03 65 views
1

在我的路由文件中,我有一个名为products的资源。产品资源的索引行为也是我的根本路径。Rails Path Helper for Root应输出“/”

resources :products 
root :to => "products#index" 

当我使用helper方法products_path(在重定向或链接中)时,它返回“/ products”。但我想要的是它返回“/”。我知道这是相同的页面,但我想保持我的URL一致。

我该如何解决这个问题?

谢谢!

回答

0

root_path()应该返回/

+0

我明白,但如果我决定要在未来改变我的根路径,我会而不必回头,并在我的应用程序中随处可见“products_path”。但是,如果没有其他方法,这将工作正常 – 2011-03-03 19:28:34

0

我想你可以(在一个辅助文件等)重新定义products_path是一样root_path

def products_path(*params) 
    root_path *params 
end 
1
root :to => 'products#index', :as => :products 
match '', :to => 'products#index', :as => :root # recreate named root_path, if you use it anywhere 

这将需要在下方显示您的resources :products,就像你在上面的例子中所做的那样。这将覆盖您从resources获得的products_pathproducts_url。前后运行rake routes进行比较。

1

如果你只是想改变指数第一次尝试中排除,然后定义它自己的,像这样:

resources :products, :except => [:index] 
resources :products, :only => [:index], :path => '/' 
+0

这是一个很好的答案,因为它为您的资源留下了一条规范的路线。这不是一个好主意,让多个网址碰到同一页面,它可以伤害SEO,混淆统计跟踪等...... – jonnii 2011-03-03 19:37:16

+0

我认为这是起初工作,但它似乎是搞砸了其他一些路线。我的创建操作停止工作。嗯... – 2011-03-03 19:56:59

+0

应该不会真正影响创建操作,因为该路由不变。你到底有什么问题? – 2011-03-03 20:02:38