Rails使用下拉列表更改语言环境

时间:2016-02-12 13:45:23

标签: html ruby-on-rails select rails-i18n setlocale

我的第一个rails应用程序一直在跟踪rails入门教程http://guides.rubyonrails.org/getting_started.html

我希望现在能够更改网站的语言。我也遵循了这本指南http://guides.rubyonrails.org/i18n.html,并且一切正常。

现在,我想设置一个下拉表,让用户使用这样一个简单的选择来选择语言:

= select "Site", "language", options_for_select([[t(:english), 'en'], [t(:spanish), 'es']])

但我不了解如何保存/提交用户选择的内容。

例如,我有一个基本的WelcomeController

class WelcomeController < ApplicationController
  def index
  end
end

其索引视图带有select:

h1 = t(:welcome_header)
= link_to t(:goto_blog), controller: 'articles'
= select "Site", "language", options_for_select([[t(:english), 'en'], [t(:spanish), 'es']])

(正如我所说的入门指南一样)。

那么,我正确使用选择吗?如何使用用户在那里选择的内容来提交然后更改区域设置?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

<强> index.html.haml

= form_tag welcome_path do
  = select_tag 'set_locale', options_for_select([[t(:english), 'en'], [t(:spanish), 'es']])
  = submit_tag 'submit'

<强> welcome_controller.rb

class WelcomeController < ApplicationController
  def index
    if params[:set_locale]
      redirect_to welcome_url(locale: params[:set_locale])
    end
  end
end