在我的路由文件中,我有一个名为products的资源。产品资源的索引行为也是我的根本路径。Rails Path Helper for Root应输出“/”
resources :products
root :to => "products#index"
当我使用helper方法products_path(在重定向或链接中)时,它返回“/ products”。但我想要的是它返回“/”。我知道这是相同的页面,但我想保持我的URL一致。
我该如何解决这个问题?
谢谢!
在我的路由文件中,我有一个名为products的资源。产品资源的索引行为也是我的根本路径。Rails Path Helper for Root应输出“/”
resources :products
root :to => "products#index"
当我使用helper方法products_path(在重定向或链接中)时,它返回“/ products”。但我想要的是它返回“/”。我知道这是相同的页面,但我想保持我的URL一致。
我该如何解决这个问题?
谢谢!
root_path()
应该返回/
我想你可以(在一个辅助文件等)重新定义products_path
是一样root_path
:
def products_path(*params)
root_path *params
end
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_path
和products_url
。前后运行rake routes
进行比较。
如果你只是想改变指数第一次尝试中排除,然后定义它自己的,像这样:
resources :products, :except => [:index]
resources :products, :only => [:index], :path => '/'
这是一个很好的答案,因为它为您的资源留下了一条规范的路线。这不是一个好主意,让多个网址碰到同一页面,它可以伤害SEO,混淆统计跟踪等...... – jonnii 2011-03-03 19:37:16
我认为这是起初工作,但它似乎是搞砸了其他一些路线。我的创建操作停止工作。嗯... – 2011-03-03 19:56:59
应该不会真正影响创建操作,因为该路由不变。你到底有什么问题? – 2011-03-03 20:02:38
我明白,但如果我决定要在未来改变我的根路径,我会而不必回头,并在我的应用程序中随处可见“products_path”。但是,如果没有其他方法,这将工作正常 – 2011-03-03 19:28:34