2010-12-17 61 views
5

我正在寻找生成一个具有附加到命名路由本身的前缀的链接。像这样显示的路径“/老/食谱”:Ruby on Rails:你如何在命名路线前缀?

recipes_path(:prefix => "old/") # the correct way should show "/old/recipes" 

我不想碰的routes.rb文件,但修改与附加前缀命名的路线。这是可能的,你会如何正确地做到这一点?

编辑:我使用Rails 3.添加可选前缀的原因是我想使用正常的recipes_path。所以我想同时使用“/食谱”和“/老/食谱”。

回答

11

如果你不想触摸路径文件,你会遇到很多痛苦,主要是因为这是Rails在试图找出你的路线时要参考的内容。我不知道的另一种方式来做到这一点,所以这里的的config/routes.rb中代码,当你确信这是一个好主意:

scope :path => "old" do 
    resources :recipes 
end 

现在,当你的路线recipes_path它会去/old/recipes,虽然这可能不是你想要的。如果是这样的话,那么你可能要扔掉这个scope结束的as选项:

scope :path => "old", :as => "old" do 
    resources :recipes 
end 

在这种情况下,这条路线现在早就old_recipes_path,还是路由到/old/recipes

+0

谢谢瑞恩。原因是我想添加可选的前缀,我也使用recipes_path。所以我需要“/食谱”和“/老/食谱”路径。我运气不好吗? – sjsc 2010-12-17 03:25:02

+1

@sjsc:对于两者都有范围一个和无范围的一个,并且您希望recipes_path先去定义的那个。 – 2010-12-17 03:54:56

+0

谢谢瑞恩:)我完全错过了你的后续行动。非常感谢。 – sjsc 2010-12-22 04:55:37