2012-03-16 66 views
0

为Rails 3的项目,我想创建搜索引擎优化的URL像Ruby on Rails的将不止一个变量时到线路

/recipes/123/lasagna 

我的食谱模型有一个名称属性url_for打破,并在路线.RB我已指定以下内容:

resources :recipes, :path => "recipes", :except => [:show] 
get :path => "recipes/:id/:name", :controller => :recipes, :action => :show, :as => :recipe 

控制器工作如所期望的,但

url_for 

recipe_path 

突破 - 它似乎不知道是干什么用的:名字

我想它的工作的默认方式 - 使用

recipe_path(recipe) 

一个解决方法是使用

recipe_path(:id => recipe.id, :name => recipe.name) 

这不是真的很漂亮 - 这意味着我必须修改所有我的观点

  1. 添加:名称正确的方法将名称添加到URL?
  2. 如何让recipe_path正常工作?
+0

尝试切换路线文件中两行的顺序。 – bblack 2012-03-16 01:28:12

回答

0

因为你已经添加食谱/:ID /:命名到你的路由文件,你可以离开了:ID =>和:名称=>。你可以这样做:recipe_path(recipe.id,recipe.name)