Краткая версия: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');
}
}
}
Это часть обработчика ответа ajax, о которой я смущен. Можете ли вы привести мне пример? Большое спасибо. Должен ли я использовать js? Если да, то как сделать частичный, и как я могу передать в него переменные? Или я должен использовать json? Если да, то что я помещаю в файл js-файла? Это то, что меня смущает. – ahnbizcad
Кроме того, у меня есть более одного из них, поэтому это будет нацелено на всех из них. – ahnbizcad
Я так расстроен в Интернете и рельсовыми гидами за то, что у вас нет функционального, достаточно всестороннего руководства ajax. Где люди все-таки учатся делать это? – ahnbizcad