【问题标题】:Javascript in partial (Ruby on Rails)部分 Javascript(Ruby on Rails)
【发布时间】:2012-07-07 18:21:27
【问题描述】:

例如,我为帖子渲染了许多 cmets。

<%= render post.comments %>

在部分 cmets 中,我有 javascript,它会重复很多次,我有多少 cmets

_comment.html.erb

<div id="content_<%= comment.id %>"><%= comment.content %></div>
<scr​ipt>$("content_<%= comment.id %>").click(function() { a​lert(​'content of comment <%= comment.id %>'​) });</sc​ript>

避免在源代码中重复 javascript 的最佳方法是什么? 我尝试创建 *_comment.js.erb* 文件并将 javascript 放在那里,但我不明白如何使它工作。

谁能解释一下如何解决这个问题?

【问题讨论】:

    标签: javascript ruby-on-rails ajax


    【解决方案1】:

    您可以将实现更改为在 app/assets/javascripts 下拥有一个包含您的脚本的 js 文件。更改脚本的选择器以匹配 cmets 的类而不是唯一 ID。如果需要,请使用 javascript 来读取元素的内容,而不是像现在这样在服务器上执行此操作。

    【讨论】:

    • 但是如果我将在 assets/javascripts 中有脚本,我如何告诉 rails 每个评论都有自己的脚本?这就是我使用 content_ 的原因
    • 你是对的。这个想法是为所有人使用相同的脚本,并在脚本代码本身中区分 cmets。我认为这对于所有 cmets 都是相同的逻辑,只是数据不同。
    • 感谢您的帮助,但您能解释一下吗?
    • 在您的选择器中,使用类,而不是 id(类似于:$('.comment'))。在警报中,使用 $(this).attr("id") 或与另一个属性类似的东西来获取实际数据。代码大致应该是这样的: $('.comment').click(function() { a​lert($(this).attr("id")​) });
    猜你喜欢
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    相关资源
    最近更新 更多