Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 3.2 基于变量的rails3路由语法_Ruby On Rails 3.2_Routes - Fatal编程技术网

Ruby on rails 3.2 基于变量的rails3路由语法

Ruby on rails 3.2 基于变量的rails3路由语法,ruby-on-rails-3.2,routes,Ruby On Rails 3.2,Routes,我有 资源:静态页面 该模型具有属性,其存在性经过验证:category_id和path 我正在尝试将显示页面设置为/category.name/path 无法识别以下语法 match 'staticpage/:id', :to => redirect("/%{category.name/%{path}") 返回未知操作 此处添加的评论是关于第一个答案(评论“目前不接受…”) 也许我把自己弄糊涂了,因为模型和控制器的名字是一样的。。。无论如何,它是否应该与“staticpages/:

我有

资源:静态页面

该模型具有属性,其存在性经过验证:category_id和path

我正在尝试将显示页面设置为/category.name/path 无法识别以下语法

  match 'staticpage/:id', :to => redirect("/%{category.name/%{path}")
返回未知操作

此处添加的评论是关于第一个答案(评论“目前不接受…”) 也许我把自己弄糊涂了,因为模型和控制器的名字是一样的。。。无论如何,它是否应该与“staticpages/:id”不匹配

但是我看不出在控制器中我如何能够声明@staticpage.category.name和@staticpage.path以上的内容来生成新路由


此外,由于我必须避免践踏其他模型/控制器,我需要保持某种形式的理智(当page不是控制器且路径验证为唯一时):“page/category.name/path”

您不能在
routes.rb中使用
重定向()

路由匹配到
控制器#操作
,而不是
型号

您需要创建一个具有适当操作的控制器,并将其与路由匹配

大概是这样的:

match 'staticpage/:id', to: staticpages#show
这将把任何匹配的
/staticpages/
重定向到
staticpages
控制器的
show
操作

然后在
show
操作中(这将是
staticpages
控制器中的一种方法),您可以从
params
散列中获取
:id
,并使用它来呈现/重定向/etc

资料来源: