3

我需要为refinerycms 项目添加一个自定义路径,我是这样做的:

mount Refinery::Core::Engine, :at => '/'
get 'news/more' => 'refinery::news::items#view_more', as: :news_view_more

现在'rake routes'可以打印正确的路线,但我无法通过refinery.news_view_more_path引用该路径,但是我在refinerycms gem源代码中找到了一些类似'refinery.news_item_path'的代码,我希望我的自定义路线可以参考方式。

谢谢 !

4

4 回答 4

2

@manosagent,我可以添加这样的路线:

Refinery::Core::Engine.routes.prepend do
  get 'news/more' => 'news::items#view_more', as: :news_view_more
  get 'notices/more' => 'notices::notices#view_more', as: :notices_view_more
end

但我不明白为什么会new/more出现两次rake routes,我需要更深入地挖掘......

于 2014-03-27T03:50:27.173 回答
0

我相信由于您的路由不是 RESTFUL,您将无法使用帮助程序来获取您想要的路径。您应该使用 RESTFUL 路由或根据需要创建帮助程序。

于 2014-03-26T06:27:33.253 回答
0

我花了一些时间来弄清楚。如果您在 Rails 应用程序中使用单独的控制器,那么您可以将您的路线代码放在路线之上。请记住,路线不适用于炼油厂页面view/refinery/*.*。如果您想在炼油厂页面上添加一些自定义路线,view/refinery/*.*那么您可以按照以下代码进行操作。

Refinery::Core::Engine.routes.draw do
  devise_for :users
  get 'author' => 'author#index'
end

在您的路线文件上。

于 2015-05-14T02:04:11.977 回答
0

Refinery CMS 深度破解了它的路由,有很多来自“refinery gems”的补丁,所以所有的 url 都会被 Refinery 的 Core Action 过滤(例如 Refinery::PagesController#show )

其实我没有时间潜入,以上都是我的猜测......

因此,如果您想添加新路由,只需在此处添加非 RESTful 路由,例如:

get 'news/more' => 'refinery::news::items#view_more', as: :news_view_more

把这条线放在炼油厂的其他路线之前,就可以了。

于 2017-07-19T09:15:15.307 回答