是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>
');
}
这对我来说似乎没问题,但没有任何反应......任何想法? 感谢
答案 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') %>");
希望这有帮助。