0

我有

资源:静态页面

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

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

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

返回未知动作

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

但是我看不到在控制器中我可以如何声明更多 @staticpage.category.name 和 @staticpage.path 来生成新路由?

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

4

1 回答 1

0

你不能使用redirect()inroutes.rb

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

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

像这样的东西:

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

这将重定向与控制器操作匹配/staticpages/的任何内容。showstaticpages

然后在show操作中(这将是您的staticpages控制器中的一个方法),您可以:idparams哈希中获取并使用它来渲染/重定向/等。

资料来源:Rails 指南

于 2013-08-16T16:41:34.087 回答