Javascript里面的脚本'标签与' application.js'

时间:2017-11-07 05:51:03

标签: javascript ruby-on-rails

在视图中的<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吗?

1 个答案:

答案 0 :(得分:1)

您通常不想这样做。你在这里有一个Ruby内部的ERB里面的JavaScript里面的HTML里面的模板,这简直太多了。

最好尝试在某个字段上将其表达为data属性,然后您的application.js可以在以后使用这些变量。这样可以节省多次使用JavaScript的转储,每次渲染页面时,这些行的95%都是相同的。

例如:

var $postId = $('#lastDiv').data('postId');

您可以在某个地方使用HTML data-postId='...'。这意味着您的JavaScript不会发生变化,它只是适应使用页面本身的任何内容。