我有
资源: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'
答案 0 :(得分:0)
您无法在redirect()
routes.rb
路由匹配Controller#action
,而不是Model
。
您需要创建一个具有适当操作的控制器,并将它们与路径匹配。
这样的事情:
match 'staticpage/:id', to: staticpages#show
这会将符合/staticpages/
的任何内容重定向到show
控制器的staticpages
操作。
然后在show
操作(这将是您的staticpages
控制器中的方法)中,您可以从:id
哈希中获取params
并使用它进行渲染/重定向/等
来源:Rails Guides