36

一方通行:

javascript_tag do
  == "var all_product_ids = #{existing_ids.to_json};"
  == "var products_json   = #{@filter.data.to_json};"

また:

= %Q{
var all_product_ids = #{existing_ids.to_json};
var products_json   = #{@filter.data.to_json};
}

これに対するより良い解決策はありますか?

4

7 に答える 7

83

スリムで

javascript:
  var all_product_ids = "#{existing_ids.to_json}";
  var products_json   = "#{@filter.data.to_json}";
于 2011-07-24T22:38:32.280 に答える
21
javascript:
  var all_product_ids = #{raw existing_ids.to_json};
  var products_json   = #{raw @filter.data.to_json};
于 2012-11-29T07:16:26.697 に答える
19

https://github.com/slim-template/slim テキスト補間段落から

SLIMはデフォルトでHTMLをエスケープします。同じことを避けるには、 #{content}に{{content}}を使用します

于 2013-10-28T07:47:32.557 に答える
10

私がやりたいのは、すべてのJavaScriptを別のファイルに保存することです。

たとえば、私は次のようにそれを行います(jquery):

レイアウト内:

..。

<body data-product-ids="<%= existing_ids.to_json %>"
      data-products-json="<%= @filter.data.to_json %>">

.. jsで:

// create your application namespace
$.myapp = {};
$.myapp.allProductIds = $.parseJSON( $('body').attr('data-product-ids') );
$.myapp.products = $.parseJSON( $('body').attr('data-products-json') );

したがって、次のようにjsで使用します。

$.myapp.allProductIds
于 2011-04-13T08:38:06.613 に答える
3

私はこれで同様の問題を抱えていました。Slimが私の変数をエスケープしていたので、他の人が提供したコードを使用してもうまくいきませんでした。結局Gonを使いました。これはシナトラ用ですが、レール用の宝石もあります。それが同様の問題を抱えている他の人に役立つことを願っています。

于 2013-02-07T08:27:18.300 に答える
3

_your_erb_file_contain_javascript_code.erb最初の作成

そして、あなたのスリムなファイルjavascript:の部分で:

#{ conditions ? (render 'your_erb_file_contain_javascript_code') : nil}
于 2015-02-14T02:45:24.150 に答える
2
javascript:
  var isAdmin = "#{current_user.admin? ? 1 : 0}";
于 2015-08-05T10:06:45.557 に答える