如何安全地与Ember.js共享Rails配置?

时间:2014-08-01 21:48:41

标签: javascript ruby-on-rails ruby ember.js devise

我正在构建一个支持rails的ember.js应用程序。我的主application.hbs文件中有一个“注销”链接,我想让这个链接使用:delete方法(我正在使用devise来处理身份验证)。我无法决定如何从rails路由输出链接。我已经在javascript中定义了所有 ember 路由,但是如何将删除URL添加到把手中?

= link_to 'Logout', app.destroy_user_session_path, method: :delete

我想将一些配置选项(网址等)从Rails传递到我的Ember.Application instatiation:

window.App = Ember.Application.create()

我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

只要信息在公众手中是安全的,您就可以将这种东西作为JSON字符串弹出到元标记中。您还可以提供一个全局配置对象,可以从您需要的应​​用程序中的任何子范围调用该对象。例如:

<meta name="rails-config" content="<%= @rails_config %>" />
显然可以从控制器设置

@rails_config。您可以使用JSON.parse($('meta[name="rails-config"]').attr('content'))从jQuery获取初始化并将其存储在您的ember应用程序中。

或者,只是一个老式的全球变量:

window.GLOBAL_RAILS_SETTINGS = {
  foo: '<%= Settings.foo %>',
  bar: '<%= Settings.bar %>',
  baz: '<%= @baz %>',
};

正如您所看到的,我还从settings.yml(或任何环境)文件中提取了一些内容。

希望有所帮助!您可以将注销网址存储为字符串,然后在手柄中使用常规锚标记或{{link-to}}帮助程序。似乎没必要对这个用例感兴趣。

必然会有其他方法来做到这一点。我不知道是否真的有“正确”的方式,只是提醒不要暴露敏感数据。