Railsでロケールスイッチャーを構築しようとしています。サポートする言語がたくさんあるので、その目的で選択ボックスを使用しようとしています。
# application.html.erb
<%= form_tag people_path, :class => 'locale' do %>
<%= select_tag 'set_locale', options_for_select(LANGUAGES, I18n.locale.to_s), :onchange => 'this.form.submit()' %>
<% end %>
# application_controller.rb
before_filter :set_i18n_locale_from_params
def set_i18n_locale_from_params
if params[:locale]
if I18n.available_locales.include?(params[:locale].to_sym)
I18n.locale = params[:locale] || "de"
else
flash.now[:notice] = "#{params[:locale]} translation not available"
logger.error flash.now[:notice]
end
end
end
def default_url_options
{ :locale => I18n.locale }
end
問題は、選択ボックスから言語を選択すると、何らかの理由でcreate
内部のアクションがトリガーされることです。people_controller.rb
form_tag
サイト全体で機能するロケールスイッチャーを取得するには、どのようなアクションを実行する必要がありますか?
助けてくれてありがとう。
class LocalesController < ApplicationController
def change_locale
if params[:set_locale]
redirect_to people_path(:locale => params[:set_locale])
end
end
end