关于Rails的动态类值的AJAX

时间:2014-10-14 03:12:27

标签: ruby-on-rails ajax

简短版:

如果我有

.favorite-link
  = link_to some_path, class: (@condition ? "favorited" : "") do 
    .star-image

的routes.rb

  resources :hacks do
    post "favorite", on: :member    
  end

hacks_controller.rb

  def favorite
    @favorite = Favorite.find_or_initialize_by(user_id: current_user.id, hack_id: params[:id])
    if @favorite.persisted?
      @favorite.destroy
      respond_to do |format|
        format.js 
      end
    else
      @favorite.save
      respond_to do |format|
        format.js 
      end
    end
  end

favorite.js.coffee

$('.favorite-link a').toggleClass("favorited")

这最后一段代码改变了每个实例。如何切换我点击的那个?做`.on'点击', - > $(this).toggleClass(" favited")做了奇怪的事情,比如每隔一次我点击它就改变它。另外,渲染js不适合这种方式。

或许更好地切换类值的方法是:如何使用ajax切换星标(即在点击链接后再次使页面评估@condition?)


与问题的核心无关,但仅供参考:

SCSS

.favorite-link {
  a.favorited {
    .star-image {
      background-image: url('star-on.png');
  }   
}

.favorite-link {
  a {
    .star-image {
      background-image: url('star-off.png');
    }
  }   
}

1 个答案:

答案 0 :(得分:1)

使用jQuery将类添加为Ajax响应处理程序的一部分:

$(".star-image").addClass("favorited");

还有.toggleClass.removeClass来填写您的实施内容。