Rails远程调用不工作/ javascript格式

时间:2012-12-16 14:30:20

标签: javascript ruby-on-rails ajax

是Ajax和rails的新手。

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

以下是视图中的链接:

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

这会在消息控制器上调用flag方法。对于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>
');
}

这对我来说似乎没问题,但没有任何反应......任何想法? 感谢

1 个答案:

答案 0 :(得分: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') %>");

希望这有帮助。