0

我将只发布文件的相关片段

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 文件,以及如何将参数传递给其中的 & ?

更新我将脚本更改为

 <script>
  alert("check-up");
    $(function() {
        show_error(<%= selector %>,<%= tab %>);
    });
   </script>

甚至没有显示警报?有任何想法吗?

4

4 回答 4

0

这个怎么样 ?

<script>
alert("check-up");
$(function() {
  show_error(<%= selector.to_json %>,<%= tab.to_json %>);
});
</script>

to_json函数将在缺少的引号之间包装您的变量。

于 2013-02-28T16:35:30.853 回答
0

在如下块中使用 ruby​​ 代码:

在 Ruby 代码中:

v = "show_error(<%= selector %>,<%= tab %>);"

在 JavaScript 中:

<script>
    $(function() {

     $(#{v});

    });
</script>
于 2013-02-28T15:41:41.047 回答
0

我在玩,我想通了。

  <%=  javascript_tag( "$(function() {show_error('#{selector}','#{tab}');});")%>

javascript_tag 发挥了至关重要的作用。你不能把它放在...

顺便说一句@Saurabh - 你非常接近答案,不知道为什么有人对你投了反对票。

于 2013-02-28T17:41:29.067 回答
0

我认为问题是你引用!你应该有这样的东西

show_error(foo,bar);

你需要类似的东西

show_error('foo','bar');

不要忘记逃避你的 JS :

show_error('<%= escape_javascript(@selector) %>', '<%= escape_javascript(@tab) %>');
于 2013-02-28T16:08:34.743 回答