Я использую Ruby on Rails 3.1, и я хотел бы правильно обрабатывать интернационализации отправки форм (я использую по умолчанию i18n gem ), связанные с кнопками в файлах представления. Проблема в том, что в моих файлах просмотра у меня есть код, подобный следующему
<%= form_tag ...%>
...
<%= submit_tag( "Send", :id => "css_id", :class => 'css_class' ) %>
<% end %>
и когда я отправляю форму (отправка AJAX), он отправляет HTTP-запрос, например, к пути /users/1?en=en
, даже если текущий язык de
(обратите внимание на часть en=en
).
Для обработки интернационализации в моем файле app/controller/application_controller.rb
я использую следующий код:
class ApplicationController < ActionController::Base
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]
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
end
В моем файле config/initializers/i18n.rb
есть:
#encoding: utf-8
I18n.default_locale = :en
LANGUAGES = [
['English', 'en'],
['Deutsch', 'de']
]
Как решить проблему? Должен ли default_url_options
правильно обрабатывать ссылки, связанные с кнопками?