2015-06-26 3 views
0

Если я определить маршрут внутри модуля, например:контроллер определяется в изменении модуля все маршруты, чтобы его объем

class DrivenSignupPlugin::AccountController < ApplicationController 
    ... 
end 

Тогда все вызовы url_for (включая redirect_to) внутри будет префикс параметра :controller с driven_signup_plugin/.

Это не является желательным поведением, так как этот контроллер использует множество маршрутов за его пределами. Например, render_access_denied - это метод от ApplicationController.

ответ

0

Чтобы обойти эту проблему, добавьте этот метод к контроллеру:

def default_url_options 
    # avoid rails' use_relative_controller! 
    {use_route: '/'} 
    end 

Для Rails 4.2+, что-то более сложное необходимо:

# inherit routes from core skipping use_relative_controller! 
    def url_for options 
    options[:controller] = "/#{options[:controller]}" if options.is_a? Hash and options[:controller] 
    super options 
    end 
    helper_method :url_for