将 locale 参数附加到 js-routes gem 在 rails 中生成的所有路径
Append locale parameter to all paths generated by js-routes gem in rails
我正在使用js-routes gem (https://github.com/railsware/js-routes)和Rails 4.0.0。
我想做的是在我的 rails 应用程序中由 js-routes 生成的每个路由中包含当前的语言环境字符串。并且此区域设置字符串(例如"en")将从当前请求的查询字符串中提取。(因此,如果用户决定切换区域设置,则页面加载可能会有所不同。
在 application_controller.rb 中,我有以下内容来发送和接收区域设置。这会成功地将 locale 参数附加到 Rails 生成的路由中,但不是由 js-routes 生成的。(在config/routes.rb中未设置任何内容)
application_controller.rb:
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
def default_url_options(options={})
{ locale: I18n.locale }
end
在javascript中,我可以调用Routes.login_path()
来获取/login
,但我想获得/login?locale=en
而不必将语言环境传递给login_path()
方法。对于我所有其他路线也是如此。
我的问题是如何让 js-routes 将"locale"参数添加到它生成的所有路由中,例如 /login?locale=fr
,而无需将任何其他选项传递给路由函数。
如果你在某个地方将语言环境设置为全局变量,你可以使用当前版本的js-routes执行以下操作(例如,假设使用i18next)
# config/initializers/js_routes.rb
JsRoutes.setup do |config|
config.serializer = <<~'JS'
function(object) {
object.locale = i18next.language
return Routes.default_serializer(object)
}
JS
end
现在,您的语言环境参数将附加到所有js路由中:
Routes.some_path() //=> /path/to/page?locale=es-ES
相关文章:
- Javascript:使用绝对路径设置img src
- 如何从rails中的代码中删除新行( )
- 如何在d3.js中返回路径的y坐标
- Rails File_field最大堆栈大小
- angularjs+rails应用程序中未显示模板
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- Jquery点击监听器没有在根路径Rails/Devise上启动
- 如何编写此 Rails 4.2 js 资产路径
- 需要 Rails 应用程序中本机 HTML 的图像路径
- Rails:我可以将GET请求发送到创建路径吗?
- 重定向至使用AJAX的rails路径
- 如何在js文件中使用rails路径来获取's和ajax调用
- 如何传递数据库ID到Rails URL路径
- Rails 4.2:JS中的图像路径问题
- 如何在Rails应用程序中获取JavaScript中的文件路径
- 在rails应用程序中更正从js到assets/images的路径
- 将 locale 参数附加到 js-routes gem 在 rails 中生成的所有路径
- 将Javascript变量传递到Rails路径
- Rails 4模型路径删除不工作,尽管正确的HTML生成
- 在Rails 4应用程序中通过相对路径调用Slider Revolution资产