Ich habe eine Menge Tutorials gelesen, und ich kann nicht scheinen, dass dies funktioniert. Ich benutze den Edelstein "acts_as_votable" und versuche, den "unähnlichen" Teil zu laden, wenn jemand eine Ressource "mag" (mein votables Modell).Mit Ajax, um eine Schiene teilweise zu laden
Resources Index:
<div class="votes">
<% if (current_user.liked? resource) %>
<!-- Unlike -->
<%= render(:partial => 'unlike', :locals => {:resource => resource})%>
<% else %>
<!-- Like -->
<%= render(:partial => 'like', :locals => {:resource => resource})%>
<% end %>
</div>
Ressourcen Controller:
def index
@resources = Resource.all.order(:cached_votes_up => :desc)
end
def like
@resource = Resource.find(params[:id])
@resource.liked_by current_user
respond_to do |format
format.html { redirect_to :back }
format.js { render layout: false }
end
end
Routen
Rails.application.routes.draw do
resources :resources do
member do
get "like", to: "resources#like"
get "unlike", to: "resources#unlike"
end
end
end
like.js.erb
$('.like_resource').bind('ajax:success', function(){
$(this).closest('.like_resource').hide();
$(this).closest('.votes').html('<%= escape_javascript (render partial: 'like', locals: { :resource => resource }) %>');
});
_like.html.erb
<%= link_to like_resource_path(resource), method: :get, remote: true, class: 'like_resource' do %>
<button class="ui basic compact icon right floated button vote_count">
<i class="heart icon" style="color: #F1F1F1"></i> <%= resource.get_likes.size %>
</button>
<% end %>
Aktuelle Funktionalität - Wenn ich auf die Schaltfläche klicken, wird dergleichen registriert, aber die Ajax nicht die teilweise laden. Ich muss die Seite neu laden, um die aktualisierte uneinheitliche Taste zu sehen.
Wenn ich die like.js.erb-Datei so ändern, dass sie eine einfache Verknüpfung enthält, anstatt eine partielle zu laden, scheint sie korrekt geladen zu sein.
$('.like_resource').bind('ajax:success', function(){
$(this).closest('.like_resource').hide();
$(this).closest('.votes').html(' <%= link_to "Unlike", unlike_resource_path(@resource), remote: true, method: :get, class: 'unlike_resource' %>');
});
versuchen, dieses '$ (this) .closest (‘ Stimmen. ') Html (' <% = escape_javascript (machen teilweise. "Gefällt mir", Einheimischen: {: resource = > Ressource})%> '); ' – uzaif
Leider schien das nicht zu funktionieren. Ich habe gerade die letzten Änderungen aufgegriffen, wenn Sie sich das aktuelle Verhalten ansehen möchten - www.sansfrancis.co. – rcrusoe
Ich überprüfte die Konsole, während ich auf die Schaltfläche "Gefällt mir" klicke, und es scheint einen Fehler von 500 zu geben. – rcrusoe