rails3基于变量的路由语法

时间:2013-08-16 16:32:04

标签: ruby-on-rails-3.2 routes

我有

  

资源:staticpages

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

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

  match 'staticpage/:id', :to => redirect("/%{category.name/%{path}")

返回未知操作

评论在此处添加RE第一个答案(评论'目前不接受......) 也许我让自己感到困惑,因为模型和控制器具有相同的名称......无论如何,它是不是应该匹配'staticpages /:id'?

但是我没有看到控制器中我如何声明@ staticpage.category.name和@ staticpage.path以生成新路由?

另外,因为我必须避免踩到其他模型/控制器,我需要保持某种形式的理智(页面不是控制器,路径验证为唯一):'page / category.name / path'

1 个答案:

答案 0 :(得分:0)

您无法在redirect()

中使用routes.rb

路由匹配Controller#action,而不是Model

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

这样的事情:

match 'staticpage/:id', to: staticpages#show

这会将符合/staticpages/的任何内容重定向到show控制器的staticpages操作。

然后在show操作(这将是您的staticpages控制器中的方法)中,您可以从:id哈希中获取params并使用它进行渲染/重定向/等

来源:Rails Guides