【问题标题】:Rails ajax jquery problemRails ajax jquery 问题
【发布时间】:2010-03-20 22:04:35
【问题描述】:

好的,我有这个问题,我正在尝试使用 Jquery 加载部分以替换列出的对象。

index.html.erb

<div class="style_image_<%= style.id %>" > <%=link_to image_tag(style.cover.pic.url(:small)), style %></div>

加载显示:

$(function() {
    $(".style_image_<%= style.id %> a").click(function() {
    $(".style_image_<%= style.id %>").html("loading... ")
    $(".style_image_<%= style.id %>").html("<%= escape_javascript(render("show")) %>")
    $.get(this.href, null, null, "html");
    return false;
  });
});

_show.html.erb:

<%=link_to image_tag(style.cover.pic.url(:normal)), style %>

我收到此错误:

missing ) after argument list
[Break on this error] $(".style_image_<%= style.id %>").htm...scape_javascript(render("show")) %>")\n

这里我的代码有两个问题,第一个是点击函数不是针对 .style_image_ .... 即 (.style_image_42) 如果我将 css 目标替换为 42 而不是_style.id 点击目标有效; 这是为什么?

无论有没有这种变化,_show 部分都不会呈现,并且会出现上述错误。

Javascript 不是很好,任何帮助都会很棒!

附言

我真正想要的效果就像那些超酷的cargo主题之一:http://cargocollective.com/publikspace

谢谢丹!

alt text http://s3.amazonaws.com/data.tumblr.com/tumblr_kzu1cnOUUs1qbto6oo1_1280.png?AWSAccessKeyId=0RYTHV9YYQ4W5Q3HQMG2&Expires=1269597925&Signature=XuwwBhKKCKu3FWGpmqXmBqwxzS0%3D

【问题讨论】:

    标签: javascript jquery ruby-on-rails


    【解决方案1】:

    当然,您可以在 javascript 文件中包含 ERB 代码,将其命名为 xxxx.js.erb,然后您就可以访问它。

    查看this link,它展示了如何通过简单地向链接添加类来“ajaxify”链接的一个很好的示例。完成此操作后,您可以对链接进行分类,并创建一个 .js.erb 文件,该文件将包含成功时调用的 javascript(包括 erb 代码)。如果您还需要访问 class_id,那么您现在也有了对象的 id。 id="yourobj_"


    更新 javascript 失败的原因是您需要在引发错误的行中转义引号,如下所示:

    $(".style_image_<%= style.id %>").html("<%= escape_javascript(render(\"show\")) %>");
    

    或者只使用单引号,像这样:

    $(".style_image_<%= style.id %>").html('%= escape_javascript(render("show")) %>');
    

    【讨论】:

    • 我有一个 js.erb 文件,它仍然无法工作!但我会检查链接 Rabbott,谢谢!
    • 这是因为你有双引号,你需要在这一行中转义“show”周围的引号 $(".style_image_").html("");
    • 这是否已经过测试,因为它对我不起作用,即使使用 js.erb 文件我也无法定位 dom 类和 mypost.id
    • 我测试了这个javascript不会抛出错误,你必须这样做。至于“以 dom 元素为目标”,我们需要查看一些生成的标记 (HTML),以确认它实际上正确打印了 style.id。此外,Rails 代码的片段会很好,这样我们就可以确认样式是实际对象并且正在正确检索。
    【解决方案2】:

    这不起作用的原因是您不能在 javascript 文件中包含 ERB 代码。 Rails 不会评估 JavaScript 文件中 之间的任何内容。

    我建议要么使用 AJAX 加载图像,要么只是将它们放入 HTML 中并根据需要使用 jQuery 显示或隐藏它们。

    【讨论】:

    • 那么我该如何定位单个class_id?
    • .js.erb 文件中绝对可以包含 Rails 代码。这就是 erb 的用途。
    • 正确,但不是像 OP 那样在普通的 .js 文件中。
    【解决方案3】:

    仍然不知道为什么我的 js.erb 文件不理解 ,也许这里没有做完。

    我有两个解决这个问题的方法:

    1. 在控制器中编写javascript并使用link_to_remote。

    2. 不显眼地将链接路径加载到链接的 DIV 中:

    Image_tag 链接如上!

    在我的 Application.js 文件中

    $(function() {
    
    $(".style_image a").live('click', function(event) { 
    
        $(this).closest(".style_teaser").load(this.href + " #show_photo");
    
    
        return false;       
    
    });
    });
    

    如果 javascript 关闭,则使用此方法链接会将您带到对象的显示路径。

    感谢Nick Craver 提醒我!

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 2011-02-11
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多