【问题标题】:Overwriting named routes from a mounted engine packaged in a gem从封装在 gem 中的已安装引擎覆盖命名路由
【发布时间】:2016-04-13 22:56:28
【问题描述】:

尚未找到任何可行的解决方案来解决此问题。我正在使用 monologue gem 向我的应用程序添加基本的博客功能,但是我真的很想重命名 gem 提供的默认“/monologue”路由。

gem中封装的引擎路由如下:

Monologue::Engine.routes.draw do
  root to:  "posts#index"
  get "/page/:page", to:  "posts#index", as:  "posts_page"
  get "/feed" => "posts#feed", as:  "feed", defaults: {format: :rss}

  get "/tags/:tag" =>"tags#show", as: "tags_page"

  namespace :admin, path: "monologue" do
    get "/" => "posts#index", as:  "" # responds to admin_url and admin_path
    get "/page/:page", to:  "posts#index", as:  "posts_page"
    get "logout" => "sessions#destroy"
    get "login" => "sessions#new"
    resources :sessions
    resources :posts
    resources :users
    get "comments" => "comments#show", as: "comments"

    match "/post/preview"=>"posts#preview", :as=>"post_preview", :via => [:put, :post]
  end

  get "*post_url" => "posts#show", as:  "post"
end

在我的应用程序的 routes.rb 中,我试图重新路由它,并在前面添加类似这样的东西,但它似乎没有注册到 rails。

Monologue::Engine.routes.prepend do
  namespace :admin, path: "create" do
    .......
  end
end

【问题讨论】:

    标签: ruby-on-rails routing rename rails-engines monologue


    【解决方案1】:

    在您的应用中,您可以在根级别挂载,或者简单地将任何您想要的作为父路由:

    mount Monologue::Engine, :at => ""
    

    或者,

    mount Monologue::Engine, :at => "/blog"
    

    要更改父域之外的路由(上图),您需要更改 Monologue 中的路由..

    【讨论】:

    • 是的,我正在寻找一种方法来从我的父应用程序中覆盖独白中的路线。如果可能的话,不想修改 gem 本身
    • 不确定如何做到这一点,我也不推荐这样做,因为拉取任何新的 Monologue 更新并不容易。另一种选择是添加您自己的博客功能...
    • 是的,很遗憾我得出了同样的结论。只是想节省一些时间。不过感谢您的回复!
    • 博客功能非常基础,你可能会发现你有更好的控制——这是我自己通常的偏好,但肯定需要更长的时间。另一种选择是编写自己的博客功能并将其放入引擎中,然后如果您最终决定需要其他内容,则可以将其换掉。
    猜你喜欢
    • 2011-12-23
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    相关资源
    最近更新 更多