Ruby on rails 如何在RubyonRails中构建区域设置切换器?
我正在尝试在Rails中构建一个区域设置切换器。我有很多语言需要支持,所以我尝试使用一个选择框来实现这个目的Ruby on rails 如何在RubyonRails中构建区域设置切换器?,ruby-on-rails,ruby,ruby-on-rails-3,localization,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Localization,Ruby On Rails 3.2,我正在尝试在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.s
# 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
如果您只想在人员索引页面上执行此操作,请尝试将
:method=>:get
添加到表单标签中。如果您需要在整个应用程序的多个不同页面上支持区域设置,我将制作一个用于切换区域设置的新控制器(LocalesController
),该控制器在会话中设置区域设置并重定向回上一页。这样您就可以在整个应用程序中检查它。谢谢,亚当。看起来它在工作。我只是不知道如何将你重定向到上一页。我在上面粘贴了我的控制器代码,也许你可以看看。重定向到(request.referer),重定向到(:back)你应该可以使用重定向到:back
。我建议使用会话
而不是传递参数
来跟踪当前区域设置。在LocalesController
中使用类似于session[:locale]=params[:set\u locale]
的东西,然后在PeopleController
中使用session[:locale]
。好的,我可以让它工作了!非常感谢你的帮助。
class LocalesController < ApplicationController
def change_locale
if params[:set_locale]
redirect_to people_path(:locale => params[:set_locale])
end
end
end