Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails url_,用于在路由中放置多个变量时中断_Ruby On Rails_Ruby_Routes - Fatal编程技术网

Ruby on rails RubyonRails url_,用于在路由中放置多个变量时中断

Ruby on rails RubyonRails url_,用于在路由中放置多个变量时中断,ruby-on-rails,ruby,routes,Ruby On Rails,Ruby,Routes,对于Rails3项目,我尝试创建seo URL,如 /recipes/123/lasagna 我的配方模型有一个name属性,我在routes.rb中指定了以下内容: resources :recipes, :path => "recipes", :except => [:show] get :path => "recipes/:id/:name", :controller => :recipes, :action => :show, :as => :rec

对于Rails3项目,我尝试创建seo URL,如

/recipes/123/lasagna
我的配方模型有一个name属性,我在routes.rb中指定了以下内容:

resources :recipes, :path => "recipes", :except => [:show]
get :path => "recipes/:id/:name", :controller => :recipes, :action => :show, :as => :recipe
控制器按需要工作,但

url_for

中断 -它似乎不知道该用什么:name

我希望它以默认方式工作-使用

recipe_path(recipe)
解决方法是使用

recipe_path(:id => recipe.id, :name => recipe.name)
这并不是很好,这意味着我必须修改我的所有观点

adding:name是将名称添加到url的正确方法吗? 我怎样才能使配方路径正常工作?
因为您已将recipes/:id/:name添加到路由文件中,所以可以省略:id=>和:name=>。您可以这样做:recipe\u pathcipe.id,recipe.name

尝试切换路由文件中两行的顺序。
recipe_path(:id => recipe.id, :name => recipe.name)