2014-10-14 2 views
0

Краткая версия:AJAX на значение динамического класса для Rails

Если у меня есть

.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 'click', -> $ (this) .toggleClass (« favorited ») делает странные вещи, например, меняет его только каждый раз, когда я нажимаю на него. Кроме того, рендеринг js не подходит для этого.

Или, возможно, лучший способ достичь переключая значение класса: как я переключать звезду с помощью AJAX (то есть сделать страницу еще раз оценить @condition после нажатия на ссылку?)


Ненужные к ядру вопроса, но FYI:

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

Использование JQuery для добавления -го е класса как часть вашего обработчика ответа Ajax:

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

Существует также .toggleClass и .removeClass заполнить вашу реализацию.

+0

Это часть обработчика ответа ajax, о которой я смущен. Можете ли вы привести мне пример? Большое спасибо. Должен ли я использовать js? Если да, то как сделать частичный, и как я могу передать в него переменные? Или я должен использовать json? Если да, то что я помещаю в файл js-файла? Это то, что меня смущает. – ahnbizcad

+0

Кроме того, у меня есть более одного из них, поэтому это будет нацелено на всех из них. – ahnbizcad

+0

Я так расстроен в Интернете и рельсовыми гидами за то, что у вас нет функционального, достаточно всестороннего руководства ajax. Где люди все-таки учатся делать это? – ahnbizcad

Смежные вопросы