Schienenmontierbarer Motor mit dynamischem Anwendungsbereich

sage, dass ich diese Routen habe:

scope '(:locale)', :locale => /en|de/ do
  mount Users::Engine => "users", as: 'users_engine'  
end

und aus Sicht des Motors:

<%= link_to 'new user', action: :new, controller: :users, locale: :de %>

Ich bekomme

/en/users/users/new?locale=de 

anstatt

/de/users/users/new

Ich habe bereits in Application Controller aufgenommen:

def set_locale
  if params.include?('locale')
    I18n.locale = params[:locale]
    Rails.application.routes.default_url_options[:locale] = I18n.locale
  end
end

und es funktioniert gut in der Haupt-App

Ich habe einen Weg gefunden, um die richtige URL zu finden

Users::Engine.routes.url_for controller: 'users/users', action: :new, only_path: true, locale: :de

aber ich denke, dass es einen besseren Weg geben sollte und was ist, wenn ich einen Link zum Ändern des Gebietsschemas im Layout erstellt habe?

<%= link_to locale: :de %>

Ich kann nicht genau wissen, um welchen Motor es sich handelt

Danke vm.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage