0

对 Ajax 和 rails 有点陌生。

我在图像上有一个链接,单击该链接应替换该图像。

这是我在视图中的链接:

<div id="flag_<%= message.id %>">
  <%= link_to image_tag("white_star.png"), flag_message_path(message), remote: true %>
</div>

这会调用消息控制器上的标志方法。对于 format.js,我有 flag.js:

{$('#flag_<%=@message.id%>').html('<% if @message.flag == false %><a href="/messages/96/flag" data-remote="true"><img alt="White_star" src="/assets/white_star.png" title="flag"></a>
    <% else %>
    <a href="/messages/96/flag" data-remote="true"><img alt="Red_star" src="/assets/red_star.png" title="flag"></a>
    <% end %>');
}

这将返回到浏览器:

{
$('#flag_94').html('<a href="/messages/96/flag" data-remote="true"><img alt="White_star" src="/assets/white_star.png" title="flag"></a>
');
}

这对我来说似乎没问题,但什么也没发生....有什么想法吗?谢谢

4

1 回答 1

1

一切似乎都很好,但我会放弃你的format.js.erb. 这些是不需要的。

如果您的 javascript 中有错误,您应该在 javascript 控制台中看到它。

将这样的代码提取到部分中通常是一种很好的做法。

所以你会有一个replace_image.html.erb

<% if @message.flag == false %>
  <a href="/messages/96/flag" data-remote="true"><img alt="White_star" src="/assets/white_star.png" title="flag"></a>
<% else %>
  <a href="/messages/96/flag" data-remote="true"><img alt="Red_star" src="/assets/red_star.png" title="flag"></a>
<% end %>

在你的format.js.erb你会做

$('#flag_<%=@message.id%>').html("<%= escape_javascript(render :partial => 'replace_image') %>");

希望这可以帮助。

于 2012-12-16T15:11:15.753 回答