我有一个Ruby on Rails应用程序,我在其中跟踪喜欢或不喜欢各种主题。当用户点击时,喜欢的数量增加,并且通过ajax调用立即显示该数字以重新加载部分。但问题是,因为link_to调用我的一个控制器中的一个函数然后执行ajax(在respond_to中),实际上没有任何东西存储在历史记录中,所以链接不能改变访问时的颜色。
这是我的css:
/* Links */
a:link {
color: #06c;
text-decoration: none;
}
a:visited {
color: red !important;
text-decoration: none;
}
a:hover{
color:#D8CA92;
text-decoration: none;
}
a:active {
color: #CC9966;
text-decoration: none;
}
我的链接:
<%= link_to '▲'.html_safe,{ :controller => :confessions, :action => :upvote, :id => conf.id }, :remote=>true %>
被调用的关联js.erb文件
$('#ajax').html("<%= escape_javascript(render :partial => 'layouts/confessions') %>");
如何在仍然使用ajax调用时获取a:visit to work?
答案 0 :(得分:2)
正如Sheikh评论的最简单的方法是将.visited
类添加到链接(唯一的另一种方法是使用html5 api,正如您可能想象的那样广泛不支持)。你这样做的方法是在成功的rails ajax调用后设置回调:
$(function() {
$('a').on('ajax:success', function() {
$(this).addClass('visited');
});
)};
如果可以通过ajax调用添加这些链接,则可能需要使用live。请注意,这不会保留点击之间的状态。要做到这一点,你可能需要将状态保存到cookie或类似的东西中。