使用Engines创建一个没有路由名称的redirect_to

时间:2015-12-11 11:55:33

标签: ruby-on-rails rails-engines

我在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 routes | grep书籍

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

1 个答案:

答案 0 :(得分:0)

我对这些参数使用 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'])