好的我有这个问题我正在尝试使用Jquery加载部分替换列出的对象。
index.html.erb
<div class="style_image_<%= style.id %>" > <%=link_to image_tag(style.cover.pic.url(:small)), style %></div>
loadshow:
$(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_&lt;%= style.id%&gt; ....即(.style_image_42)如果我用42而不是_style.id替换css目标,则点击目标有效; 为什么会这样?
无论是否有此更改,_show partial都不会呈现,并且会给出上述错误。
使用Javascript并不是那么好,任何帮助都会很棒!
P.S。
我真正想要的效果就像其中一个超酷货主题:http://cargocollective.com/publikspace
谢谢Dan!
答案 0 :(得分:2)
当然,您可以在javascript文件中使用ERB代码,将其命名为xxxx.js.erb并且您可以访问它。
查看this link,其中显示了如何通过简单地向其添加类来“ajaxify”链接的一个很好的示例。执行此操作后,您可以对链接进行分类,并创建一个.js.erb文件,该文件将包含成功调用的javascript(包括erb代码)。如果你也需要访问class_id,你现在也拥有了对象的id。 id =“yourobj_&lt;%= @ yourobj.id%&gt;”
<强>更新强> 你javascript失败的原因是因为你需要在引发错误的行中转义你的引号,如下所示:
$(".style_image_<%= style.id %>").html("<%= escape_javascript(render(\"show\")) %>");
或者只使用单引号,如下所示:
$(".style_image_<%= style.id %>").html('%= escape_javascript(render("show")) %>');
答案 1 :(得分:0)
这不起作用的原因是因为你不能在javascript文件中使用ERB代码。 &lt; %%&gt;之间的任何内容Rails不会评估javascript文件。
我建议使用AJAX加载图像,或者只是将它们放在HTML中,然后根据需要使用jQuery显示或隐藏它们。
答案 2 :(得分:0)
仍然不确定为什么我的js.erb文件不理解&lt;%= style.id%&gt;,也许这不是在这里做的事情。
我有两个解决这个问题的方法:
在控制器中编写javascript并使用link_to_remote。
不引人注意地将链接路径加载到链接的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感谢您对此提出的建议!