'script' 标签内的 JavaScript 与 'application.js' 之间的 JavaScript

标签 javascript ruby-on-rails

<script> 中使用 javascript 有什么区别?在 View 中标记并使用 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 和类。

在每个迭代器的 View 中使用此代码是否安全?使用 getScript(Url) 安全吗?像这样?有没有另一种方法可以将这些变量传递给我的 application.js

最佳答案

您通常不想这样做。这里是模板内的 ERB 内的 Ruby、JavaScript 内的 HTML 内的,这实在是太多层了。

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

例如:

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

您可以在 HTML 中的某个位置放置 data-postId='...' 。这意味着您的 JavaScript 不会改变,它只是适应使用页面本身上的任何内容。

关于 'script' 标签内的 JavaScript 与 'application.js' 之间的 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47150831/

相关文章:

ruby-on-rails - 带有 turbolinks 的 Rails link_to 方法禁用格式化

javascript - 尽管其有效性,但未提供所需类型的变量

javascript - 如何将返回响应的预定义 JavaScript 回调作为参数传递到函数中?

javascript - 运行调试器时回调未运行;

javascript - 使用npm模块进行前端依赖失败

ruby-on-rails - 有没有一种简单的方法可以从 ruby​​ 中的日期字符串中获取年份?

javascript - 回调: "Object is not a function"

sql - 使用求和函数时如何避免 PG::NumericValueOutOfRange

ruby-on-rails - 雪豹+ cucumber /webrat/rspec

html - 如何将 HTML5 数据属性添加到 Rails 表单标签标签?