CSS a:访问过不使用AJAX调用 - Ruby On Rails

时间:2013-02-23 21:33:43

标签: css ruby-on-rails ajax

我有一个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 '&#9650;'.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?

1 个答案:

答案 0 :(得分:2)

正如Sheikh评论的最简单的方法是将.visited类添加到链接(唯一的另一种方法是使用html5 api,正如您可能想象的那样广泛不支持)。你这样做的方法是在成功的rails ajax调用后设置回调:

$(function() {
  $('a').on('ajax:success', function() {
    $(this).addClass('visited');
  });
)};

如果可以通过ajax调用添加这些链接,则可能需要使用live。请注意,这不会保留点击之间的状态。要做到这一点,你可能需要将状态保存到cookie或类似的东西中。