【问题标题】:How do i build html inside .js.haml file?如何在 .js.haml 文件中构建 html?
【发布时间】:2012-04-19 20:09:05
【问题描述】:

我想知道如何在我的 ajax 调用中雄辩地返回以下调用?在 append 函数中我可以在哪里设置断线等?

$(".q#{@question_id}.result_to_response")
.html("#{escape_javascript(@resp)}")
.append('<div><a href="#" class="continue_button">Continuez to next question</a></div>');

【问题讨论】:

    标签: ruby-on-rails coffeescript haml


    【解决方案1】:

    我给你的建议是使用jQuery templates 或类似的东西。这样您就可以轻松地使用 haml 生成所有模板,然后在 html 正文中附加 .tmpl() 返回值。

    生成内联 javascript 是应用程序设计不佳的标志。

    【讨论】:

    • 如果你的意思是“穷”而不是“纯”,那我同意。
    • 但我一般建议不要使用 JS 模板,因为让服务器完成所有渲染然后将预渲染的 HTML 传递给浏览器通常更易于维护。
    • 您能否评论一下您如何生成 smthng,例如使用 ajax 加载其数据的提要?纯html代码是在服务器端生成的?
    • 很容易。客户端为 feed 中的新条目发送 Ajax 请求(使用静态 JS)。服务器处理请求,呈现 HTML,并将 HTML 返回给客户端。客户端在 DOM 中插入 HTML。
    • 这种方式的优点是在客户端上无事可做。缺点是严重的网络流量开销,此数据不适用于 api 使用和。我认为这也应该注意。
    【解决方案2】:

    Haml 并不适合生成 JavaScript;它实际上只适用于 HTML 和 XML(这非常好)。

    此外,您根本不应该动态生成 JS/CoffeeScript 文件。你的 JS 文件应该是静态的(就像你的 Ruby 文件一样)。

    此外,您在 HTML 中使用 escape_javascript 的事实让我怀疑您正在尝试生成内联 JavaScript。如果是这种情况,请不要这样做。 JS 和 CoffeeScript 只属于静态外部文件。

    如果您可以提供有关您的用例的更多信息,我将尝试提出具体建议。

    【讨论】:

    • ...哦,如果字符串中没有其他内容,则不需要"#{}"
    • 你显然不知道 rails js 更新/插入/显示是如何工作的
    • @mhenrixon 我知道 Rails 如何与 JavaScript 一起工作。您在这里有什么不同意的具体事情,还是只是在挥手?
    • 按照stackoverflow.com/a/5032666/61249 编码,它对我来说看起来非常好,而且比 erb 干净得多。这些基于 rails 操作的部分是要使用的,这意味着我们应该从 update.js.haml/erb 生成 js/coffescript,因为它高效且方便,您不必手动连接 rails 团队已经完成的所有事情你。
    • @mhenrixon 您的评论不清楚;尝试再次解释您的意思(特别是,我看不出您链接到的帖子如何特别相关)。但不幸的是,Rails 框架鼓励的许多 JS 架构实践确实很糟糕(尽管在 Rails 3 中情况有所改善)。在这方面,Rails 方式并不总是正确的方式。
    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 2021-02-26
    相关资源
    最近更新 更多