레일스를 사용 중이며 ajax에 북마크 아이콘을 만들려고합니다. 코드가 작동합니다. 문제는 요청이 전송되었지만 이미지가 변경되지 않는 첫 번째 클릭에 대한 것이며, 다음 클릭에 대해서는 문제가 OK입니다 (요청 전송 및 이미지 변경).첫 번째 클릭시 jQuery가 작동하지 않습니다.
내보기 :
<%= link_to favorite_company_job_path(@job, matching_id: candidate.id), method: :post, remote: true do %>
<span class="favorite">
<% if candidate.favorite %>
<img src="<%= asset_url "favorite-activated.png" %>" alt="favorito" class="img-40" id="favorite_activated_<%= candidate.id %>">
<% else %>
<img src="<%= asset_url "favorite.png"%>" alt="favorito" class="img-40" id="favorite_<%= candidate.id %>">
<% end %>
</span>
<% end %>
내 파일 favorite.js.erb
$('#favorite_<%= @matching.id %>').on({
'click': function(){
$('#favorite_<%= @matching.id %>').attr('src','<%= asset_url "favorite-activated.png" %>');
$('#favorite_<%= @matching.id %>').attr('id','favorite_activated_<%= @matching.id %>');
}
});
$('#favorite_activated_<%= @matching.id %>').on({
'click': function(){
$('#favorite_activated_<%= @matching.id %>').attr('src','<%= asset_url "favorite.png" %>');
$('#favorite_activated_<%= @matching.id %>').attr('id','favorite_<%= @matching.id %>');
}
});
내 컨트롤러 :
def favorite
@matching = @job.matchings.find(params[:matching_id])
if @matching.favorite
@matching.favorite = false
else
@matching.favorite = true
end
@matching.save
respond_to do |format|
format.html { redirect_to company_job_path(@job) }
format.js # <-- will render `app/views/company/jobs/favorite.js.erb`
end
end
어떤 생각?
나는 당신의 요청 코드를하지 않습니다. JS 전체를 붙여 넣을 수 있습니까? – AntonTkachov
@AntonTkachov 컨트롤러 코드를 추가했지만 JS에 대한 모든 것은 내가 좋아하는 것입니다 .js.erb. – Etienne
먼저 js 응답에'$ (document) .ready (function() {'이 필요 없습니다.) 그것을 삭제하고 Pure JS 코드로 응답 해보십시오. 지금 시도해보십시오. – AntonTkachov