Rails:从非内联JS访问实例变量
Rails: Accessing instance variable from not inline JS
我在.html.erb文件中有这段代码:
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<script>
FB.Event.subscribe('edge.create',
function(response) {
send_fb_like();
}
);
FB.Event.subscribe('edge.remove',
function(response) {
send_fb_unlike();
}
);
function send_fb_like()
{
var business_name = '<%= @consumer.name %>';
alert("You liked"+consumer_name);
}
function send_fb_unlike()
{
var business_name = '<%= @consumer.name %>';
alert("You unliked"+consumer_name);
}
</script>
这工作正常,我可以正确访问@consumer.name。但是,如果我将其更改为:
facebook_consumer.js如下所示:
$(function(){
FB.Event.subscribe('edge.create',
function(response) {
send_fb_like();
}
);
FB.Event.subscribe('edge.remove',
function(response) {
send_fb_unlike();
}
);
function send_fb_like()
{
var business_name = '<%= @consumer.name %>';
alert("You liked"+consumer_name);
}
function send_fb_unlike()
{
var business_name = '<%= @consumer.name %>';
alert("You unliked"+consumer_name);
}
});
它会转储这个:
你喜欢<%= @consumer.name %>
。我试着将文件保存为js.erb,但它似乎不知道@consumer是什么。
对什么是最好的方法有什么想法吗?
您最好的选择可能是创建一个应用程序范围的JS对象来存储您需要的值。在页面顶部,您可以向该对象添加元素,这些元素将可用于链接的脚本。
<script type="text/javascript">
app = app || {}
app.keyName1 = "<%= @variable1 %>";
app.keyName2 = "<%= @variable2 %>";
</script>
您不能将Ruby代码内联到.js文件中。如果您想使用Ruby代码,您需要创建一个.js.erb文件,然后在其中呈现一个部分。
# controller
render :partial => "/path/to/js/partial.js.erb"
# inside your JS partial
# you can use <%= @consumer.name %> freely in this file
# and then add the line below to render your normal html.erb file
$("#reviews").append("<%= escape_javascript(render(:partial => '/path/to/partial.html.erb' )) %>");
相关文章:
- 为什么在这个网站上不能通过JS访问元素
- 使用Angular.js访问php数组数据
- 使用Backbone.js访问JSON响应的部分
- JS/JON-通过JS访问JSON中的多个数组
- 从 Node.js 访问 Jade 中的 Javascript 对象
- 通过oauth令牌passport.js访问用户配置文件
- require.js:访问所有加载的模块
- 如何使用d3.js访问JSON
- 在Internet Explorer中使用JS访问对象内部的SVG
- 连接到客户端's PC使用php或JS访问文件
- 主干网需要.js访问模型
- 从 duo 构建的 js 访问脚本中的对象
- 在子对象中显示筛选列表的挖空 js.访问要过滤的父对象列表
- 来自控制器外部的角度JS访问范围
- 从控制台 js 访问属性
- 从 js 访问插件控制器
- 使用多线程.js访问范围
- 如何使用 Handlebars.js 访问 JSON 对象
- GWT:如何从纯js访问其Web服务
- 如何从 Node.js 访问、检索、存储和删除文件到远程文件服务器中