【问题标题】:Make a redirect_to without route name using Engines使用引擎创建一个没有路由名称的redirect_to
【发布时间】:2015-12-11 11:55:33
【问题描述】:

我在我的 Rails 应用程序上使用引擎。这实质上意味着应用程序及其引擎可以具有相同名称的路由并且它们不会发生冲突。

所以,我有两种类型的路由,引擎内部和外部路由,它们的名称不同:

带有路线名称:

引擎内部:

redirect_to  main_app.books_show_path

引擎外

redirect_to books_show_path

但是我有一个 php 应用程序,它调用 rails 路由发送控制器和它想要去的路由的操作。 所以,我还没有路线名称。 如果路线在引擎外部,我没有遇到问题,因为这可行:

redirect_to (controller: books,action: show)

但是当我想进入引擎路线时,我不知道该怎么做。我需要这样的东西:

redirect_to (controller: books,action: show,path: main_app)

$rake 路由 | grep 书籍

books GET  /books(.:format) MiEngine/books#index    
Routes for MiEngine::Engine:    
books GET  /books(.:format) MiEngine/books#index

【问题讨论】:

  • 你的引擎有isolated_namespace吗?
  • 是的,isolate_namespace MiEngine

标签: ruby-on-rails rails-engines


【解决方案1】:

我使用带有这些参数的 url_for

  • 如果你有路线的名字:

    redirect_to url_for([nameOfYourEngine, nameOfYourRoute])
    
    redirect_to url_for([main_app, 'books_show'])
    
  • 如果你没有得到路线的名字:

    redirect_to url_for([nameOfYourEngine,nameController, nameMethod])
    
    redirect_to url_for([main_app,'books','show'])
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2016-04-29
    • 2018-11-30
    相关资源
    最近更新 更多