我有
@send_variable = 'show value in alert'
在控制器文件中。在application.js中,我想做类似的事情:
var receive_variable = <%@send_variable %>;
alert(receive_variable ); >>> screen show 'show value in alert'
我该怎么做?
答案 0 :(得分:2)
@send_variable
中的application.js
将无法使用,因为它是一个javascript文件。但是,您可以选择在呈现操作模板后警告隐藏div中的值。
如下所示:
# Controller
def action
@send_variable = 'show value in alert'
end
# app/view/action.html.erb
# Note in your 'hidden' css class you need to set it to 'visibility: hidden;'
<%= "<div id='send_variable' class='hidden'>#{@send_variable}</div>" if @send_variable %>
# app/assets/javascripts/application.js
$(document).ready(function(){
$(document).on('load', '#send_variable', function(evt) {
alert($('#send_variable').text());
});
});
另一种方法是在调用此操作的链接或按钮中使用remote: true
。这样做会对操作进行ajax调用,您可以使用js
格式来执行js操作视图模板。
如下所示:
# Controller
def action
@send_variable = 'show value in alert'
respond_to do |format|
format.js
format.html
end
end
# app/view/action.js.erb
alert("<%= j @send_variable %>");
答案 1 :(得分:1)
添加=打印
var receive_variable = '<%= @send_variable %>';
alert(receive_variable );
或只是
alert('<%= @send_variable %>');
另外,检查http://javascript.crockford.com/code.html是否有JS约定
答案 2 :(得分:1)
在你的javascript中,你必须用引号括起实例变量(@send_variable)。
alert('<%=@send_variable%>');
假设@send_variable类似于整数,则引号不是必需的。
应该这样做。
答案 3 :(得分:1)
看看&#39; gon&#39; gem(https://github.com/gazay/gon),它允许你使用类似gon.variable_name = value的东西在rails代码中的任何地方设置javascript变量,然后在任何javascript中使用它,比如gon.variable_name。我曾经使用过上面提到的技术,但是&#39; gon&#39;使它变得更容易,因为它实际上充当rails和javascript之间的窗口