在视图中的<script>
标记内使用javascript和使用application.js
文件有什么区别?
我需要直接在javascript中传递变量:
<% @posts.each do |post| %>
//OTHER CODE etc etc...
<script type="text/javascript">
jQuery(function() {
$('#myDiv_<%= post.id %>').scroll(function() {
var url;
url = $('.myClass_<%= post.id %> .next_page').attr('href');
if (url && $(this).scrollTop() + $(this).innerHeight() >= this.scrollHeight) {
$('.myClass_<%= post.id %>').text('Fetching more posts...');
return $.getScript(url);
}
});
return $(window).scroll();
});
</script>
<% end %>
我将<script>
放在每个迭代器中,因此我可以访问单个带唯一id的变量来设置id和类。
在每个迭代器的视图中使用此代码是否安全?使用getScript(Url)
这样安全吗?还有另一种方法可以将这些变量发布到我的application.js
吗?
答案 0 :(得分:1)
您通常不想这样做。你在这里有一个Ruby内部的ERB里面的JavaScript里面的HTML里面的模板,这简直太多了。
最好尝试在某个字段上将其表达为data
属性,然后您的application.js
可以在以后使用这些变量。这样可以节省多次使用JavaScript的转储,每次渲染页面时,这些行的95%都是相同的。
例如:
var $postId = $('#lastDiv').data('postId');
您可以在某个地方使用HTML data-postId='...'
。这意味着您的JavaScript不会发生变化,它只是适应使用页面本身的任何内容。