1

私はこれらのルートを持っていると言います:

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

エンジンの観点から:

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

私は得る

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

それ以外の

/de/users/users/new

私はすでにアプリケーションコントローラーに含まれています:

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

そしてそれはメインアプリでうまく動作します

私は正しいURLを取得する方法を見つけました

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

しかし、もっと良い方法があるはずだと思います。レイアウトにロケール変更リンクを作成した場合はどうなりますか?

<%= link_to locale: :de %>

これがどの正確なエンジンであるかわかりません

vmに感謝します。

4

1 に答える 1

0

私はそれに対する解決策を見つけたと思います...

application_controller.rb-File で url_options-method を使用するだけです (以下のリンクを参照)。

参照: https://stackoverflow.com/a/18299975/603126

それが役に立てば幸い!

よろしく

フィリップ

于 2013-08-18T14:16:07.753 に答える