Javascript Rails:使用ERB将控制器变量传递给JS会减慢页面速度吗?
我知道有两种方法可以将控制器(/action)中定义的变量传递给JS 官方的方式是 .js.erb:Javascript Rails:使用ERB将控制器变量传递给JS会减慢页面速度吗?,javascript,jquery,ruby-on-rails,ruby,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ruby,Ruby On Rails 3,我知道有两种方法可以将控制器(/action)中定义的变量传递给JS 官方的方式是 .js.erb: var banana = "<% @banana %>" 此js文件在控制器的多个操作/视图上加载。对我来说,不使用.erb扩展名是有道理的:用户在第一次点击控制器中的任何操作/视图时都会缓存它。这样,当他们浏览到不同的页面时,就不必下载不同版本的文件。我说得对吗?是的,你说得对。javascript将缓存在客户端浏览器上 您仍然希望通过“js”或脚本文件发送数据,您可以使用这个名
var banana = "<% @banana %>"
此js文件在控制器的多个操作/视图上加载。对我来说,不使用.erb扩展名是有道理的:用户在第一次点击控制器中的任何操作/视图时都会缓存它。这样,当他们浏览到不同的页面时,就不必下载不同版本的文件。我说得对吗?是的,你说得对。javascript将缓存在客户端浏览器上 您仍然希望通过“js”或脚本文件发送数据,您可以使用这个名为的gem。
我建议您使用gem“gon”,这在RailsCast中有详细介绍。它使你的控制器更干净。如果您试图将数组或散列传递给js,那么您的方法将更加麻烦。我认为您的问题在于您使用的是执行代码的
,而不是执行代码并将结果呈现回模板中的
。只有在加载html页面后才能访问页面。据我所知,它使用网页作为代理将数据从rails服务器传输到javascript。但是,如果您想在任何时候使用该变量,可以从javascript向rails控制器发出ajax(post)请求,并以json的形式检索该值 示例: AJAX请求:
$.ajax({
type: "POST",
url: <PageURL>,
async: false,
dataType: 'application/json',
success: function(data){
data = JSON.parse(data);
},
});
def <PageURL>
render :json => {:result => <value_you_want_to_return>}
end
$.ajax({
类型:“POST”,
网址:,
async:false,
数据类型:“应用程序/json”,
成功:功能(数据){
data=JSON.parse(数据);
},
});
您的“数据”将包含返回值
在控制器端,它应该是:
控制器:
$.ajax({
type: "POST",
url: <PageURL>,
async: false,
dataType: 'application/json',
success: function(data){
data = JSON.parse(data);
},
});
def <PageURL>
render :json => {:result => <value_you_want_to_return>}
end
def
render:json=>{:result=>}
结束
不要忘记在routes.rb文件中定义控制器的路径 你的问题到底是什么?
var banana=”“
什么也不传递<代码>也不传递任何内容。当客户端执行不同的操作时,javascript文件将由客户端下载,那么此时如何加载这些文件?