我正在使用Ruby on Rails 3.1,我想正确处理与视图文件中的按钮相关的表单提交国际化(我使用默认的 i18n gem )。问题是在我的视图文件中我有如下代码
<%= form_tag ...%>
...
<%= submit_tag( "Send", :id => "css_id", :class => 'css_class' ) %>
<% end %>
当我提交表单(AJAX提交)时,即使当前语言为/users/1?en=en
,它也会向例如路径de
发送HTTP请求(请注意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
是否应该正确处理与按钮相关的链接?