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

問題はあなたの引用だと思います!あなたはこのようなものを持っている必要があります

show_error(foo,bar);

そして、あなたは次のようなものが必要です

show_error('foo','bar');

JS をエスケープすることを忘れないでください:

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

私は遊んでいて、それを理解しました。

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

javascript_tag は重要な役割を果たしました。…に同封することはできません。

ところで@Saurabh - あなたは答えに非常に近かったので、誰かがあなたに反対票を投じた理由がわかりません。

于 2013-02-28T17:41:29.067 に答える
0

次のようなブロックで ruby​​ コードを使用します。

Ruby コードでは:

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

JavaScript の場合:

<script>
    $(function() {

     $(#{v});

    });
</script>
于 2013-02-28T15:41:41.047 に答える