如何解决如何在Slim模板的“ javascript”部分中嵌入动态Ruby代码?
| 单程: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};
}
有没有更好的解决方案呢?
解决方法
我更喜欢做的是将所有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
,在苗条
javascript:
var all_product_ids = \"#{existing_ids.to_json}\";
var products_json = \"#{@filter.data.to_json}\";
,javascript:
var all_product_ids = #{raw existing_ids.to_json};
var products_json = #{raw @filter.data.to_json};
,来自https://github.com/slim-template/slim
文字插值段落
SLIM默认情况下转义HTML。
为避免相同,请对#{content}使用#{{content}}
,我对此也有类似的问题。使用其他人提供的代码对我不起作用,因为slim会用html逃避我的变量。我最终使用了Gon。这个是给Sinatra的,但是他们也有Rails的瑰宝。希望它可以帮助其他有类似问题的人。
,首先创建一个_your_erb_file_contain_javascript_code.erb
然后在您的瘦文件javascript:
部分中:
#{ conditions ? (render \'your_erb_file_contain_javascript_code\') : nil}
,javascript:
var isAdmin = \"#{current_user.admin? ? 1 : 0}\";
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。