0

我有一个 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:visited 工作?

4

1 回答 1

2

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

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

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

于 2013-02-24T00:40:22.443 回答