그래, 사용자가 컬렉션에서 책을 추가/삭제할 수 있도록 acts_as_votable gem을 사용하고 있습니다. 페이지를 다시로드하지 않고도 추가/제거 버튼을 사용할 수는 있지만 버튼을 구현하는 곳에서는 투표 카운터로만 사용할 수 없습니다. 투표 수를 계산하는 데 신경 쓰지 않고 추가/제거 만합니다. 내 가정은 적절한 자바 스크립트 코드와 함께 fave.js.erb 및 unfave.js.erb를 추가해야하지만 정확히 무엇입니까? 미리 감사드립니다! 그런 다음 자바 스크립트 acts_as_votable gem
resources :books do
get "book/:page", :action => :index, :on => :collection
member do
post "fave", to: "books#fave"
post "unfave", to: "books#unfave"
end
end
뷰에서 그들과 같이이라고
def fave
@book = Book.find(params[:id])
current_user.likes @book
respond_to do |format|
format.html { redirect_to :back }
format.json
format.js
end
end
def unfave
@book = Book.find(params[:id])
current_user.dislikes @book
respond_to do |format|
format.html { redirect_to :back }
format.json
format.js
end
end
그리고 routes.rb : 여기
는 컨트롤러에서 작업입니다<% if user_signed_in? %>
<ul class="list-inline text-center">
<% if current_user.voted_up_for? @book %>
<li><%= button_to unfave_book_path(@book, method: :put, remote: true), class: "btn btn-default btn-danger", title: "Remove from Collection", data: {disable_with: "<span class='glyphicon glyphicon-minus'></span> Removing..."} do %>
<span class="glyphicon glyphicon-heart-empty"></span> Remove from Collection
<% end %>
</li>
<% else %>
<li><%= button_to fave_book_path(@book, method: :put, remote: true), class: "btn btn-default btn-success", title: "Add to Collection", data: {disable_with: "<span class='glyphicon glyphicon-plus'></span> Adding..."} do %>
<span class="glyphicon glyphicon-heart"></span> Add to Collection
<% end %>
</li>
<% end %>
여전히 비동기 적으로로드되지 않습니다. 이것이 터보 링크의 문제점 일 수 있습니까? – user3141095
아마도 그렇지 않습니다. 터보 링크는 GET 외에 요청을 수신 대기한다고 생각하지 않습니다. js 템플릿에 경고가 표시되는지 확인하십시오. 그렇다면 jquery를 조정해야 할 수도 있습니다. 그렇지 않다면 서버 로그를보고 요청이 렌더링하는 템플리트를보십시오. – evanbikes