我只会发布文件的相关片段
index.html.erb
<%= render "trace/outbound_message", error => @msg_error,:selector => "#ui-accordion-accordion-panel-3", :tab => "ui-id-1" %>
_outbound_message.html.erb
<% unless error.blank? %>
<%= error.html_safe %>
<script>
$(function() {
show_error(<% selector %>,<% tab %>);
});
</script>
<%end%>
但是这个函数无法成功调用,因为我认为js不会嵌入ruby代码。什么是我最快的解决方法?我是否必须调用js.erb文件,如何将参数传递给&amp;在它?
UPDATE 我将脚本更改为
<script>
alert("check-up");
$(function() {
show_error(<%= selector %>,<%= tab %>);
});
</script>
即使没有显示警报?有什么想法吗?
答案 0 :(得分:0)
在块中使用ruby代码,如:
在Ruby代码中:
v = "show_error(<%= selector %>,<%= tab %>);"
在javascript中:
<script>
$(function() {
$(#{v});
});
</script>
答案 1 :(得分:0)
我认为问题是你的报价!你应该有这样的东西
show_error(foo,bar);
你需要像
这样的东西show_error('foo','bar');
不要忘记逃避你的JS:
show_error('<%= escape_javascript(@selector) %>', '<%= escape_javascript(@tab) %>');
答案 2 :(得分:0)
这个怎么样?
<script>
alert("check-up");
$(function() {
show_error(<%= selector.to_json %>,<%= tab.to_json %>);
});
</script>
to_json
函数会将您的变量包装在引号之间,而这些引号是缺失的。
答案 3 :(得分:0)
我在玩,我想出来了。
<%= javascript_tag( "$(function() {show_error('#{selector}','#{tab}');});")%>
javascript_tag起了至关重要的作用。你不能把它括起来......
Btw @Saurabh - 你非常接近答案,不知道为什么有人会对你投票。