如何向refinerycms添加自定义路由

时间:2014-03-26 04:46:48

标签: ruby-on-rails refinerycms refinery

我需要为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'的代码,我希望我的自定义路由可以这样说。 / p>

谢谢!

4 个答案:

答案 0 :(得分: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/morerake routes出现两次,我需要深入挖掘......

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

在你的路线文件上。

答案 3 :(得分:0)

炼油厂CMS深深地破解了它的路线,来自"炼油宝石的大量补丁",所以所有的网址都将被炼油厂的核心行动过滤(例如Refinery :: PagesController #show )

实际上我没有时间潜水,以上就是我的猜测......

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

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

在炼油厂的其他路线之前放这条线,会起作用。