如何在 Rails 应用程序和客户端之间共享数据(始终可用)
How can I share data between Rails app and client (always available)
我希望能够定义一个 ruby 方法来 returns 数据哈希,但我也希望它成为 application.js 文件的一部分关于应用程序初始化。
实际数据:一切都在这里定义(我猜是在 lib 或配置中?)
def shared_data
{ foo: bar }
end
在应用程序中(我如何在应用程序中访问 shared_data?)
def some_method
shared_data # => { :foo => 'bar' }
end
在应用程序初始化时生成了 js 文件(我如何生成并包含在 application.js 中)
var shared_data = { "foo": "bar" };
我的问题:
- 我应该把这个
shared_data
方法放在哪里?
- 如何生成并包含此 JavaScript?
如果此数据在应用程序初始化后没有改变
您可以将其放入 config/initializer/shared_data.rb
并将其分配给常量或 $global 变量,这样该数据将在应用程序范围内可用
$shared_data = { x:1, y:2 }
然后创建一个 javascript 文件 assets/javascripts/main.js.erb
(注意 .erb 扩展名),将其包含在 application.js
中,您将能够访问此数据
var sharedData = <%= $shared_data %>
注意事项:
此数据将被编译并变为静态 assets:precompile
in prodution
我希望能够定义一个 ruby 方法来 returns 数据哈希,但我也希望它成为 application.js 文件的一部分关于应用程序初始化。
实际数据:一切都在这里定义(我猜是在 lib 或配置中?)
def shared_data
{ foo: bar }
end
在应用程序中(我如何在应用程序中访问 shared_data?)
def some_method
shared_data # => { :foo => 'bar' }
end
在应用程序初始化时生成了 js 文件(我如何生成并包含在 application.js 中)
var shared_data = { "foo": "bar" };
我的问题:
- 我应该把这个
shared_data
方法放在哪里? - 如何生成并包含此 JavaScript?
如果此数据在应用程序初始化后没有改变
您可以将其放入 config/initializer/shared_data.rb
并将其分配给常量或 $global 变量,这样该数据将在应用程序范围内可用
$shared_data = { x:1, y:2 }
然后创建一个 javascript 文件 assets/javascripts/main.js.erb
(注意 .erb 扩展名),将其包含在 application.js
中,您将能够访问此数据
var sharedData = <%= $shared_data %>
注意事项:
此数据将被编译并变为静态 assets:precompile
in prodution