Ich arbeite an einer Beispiel-Rails-App, die Benutzer, Ereignisse (die der Benutzer erstellt) hat, und schließlich können Benutzer diese Ereignisse abonnieren/teilnehmen.Rails-Ansicht wird nicht aktualisiert nach redirect_to
Ich habe eine Tabelle, in der Benutzer Ereignisse abonnieren und abmelden können, wenn sie auf eine link_to-Schaltfläche in der Ereigniszeile klicken. Das link_to ruft eine Methode vom event_controller auf, die eine Umleitung zum current_path hat, aber wenn ich auf die Schaltfläche klicke, passiert nichts mit der Ansicht, aber es scheint, dass der Server die Ansicht rendert.
Ist dies, weil ich es vom event_controller aufrufen, aber mit dem Show-Controller von User?
LOG:
Rendered users/show.html.erb within layouts/application (17.1ms)
Benutzer> show.html.erb
<% if current_user?(@user) %>
<td><%= link_to "Delete", e, method: :delete,
data: { confirm: "You sure?" } %></td>
<% else %>
<% if attendingEvent?(current_user, e.id) %>
<td><%= link_to "Not Going", events_remove_event_to_attend_path(event_id: e.id, event_owner_id:@user.id, current_path:request.fullpath), remote: true %></td>
<% else %>
<td><%= link_to "I Want To Go", events_add_event_to_attend_path(event_id: e.id, event_owner_id:@user.id, current_path:request.fullpath), remote: true %></td>
<% end %>
<% end %>
events_controller.rb
def add_event_to_attend
puts attend_params
puts request.fullpath
@attend = Attendee.new
@attend.event_id = (attend_params[:event_id])
@attend.user_id = current_user.id
if @attend.save
flash[:success] = "You created an assocations"
redirect_to(attend_params[:current_path])
puts 'saved'
else
flash[:danger] = "You did not create the event"
puts 'not saved'
end
end
def remove_event_to_attend
@event_to_delete = Attendee.find_by_user_id_and_event_id(current_user.id,params[:event_id])
@event_to_delete.destroy
redirect_to(attend_params[:current_path])
end
Hallo und willkommen zu Stack Overflow. Also ... ich bemerke, dass Sie einige 'puts' in Ihren Code geschrieben haben ... was sehen Sie in den Serverprotokollen/Terminalbildschirm? Zweitens: Was hast du in deinen rjs-Vorlagen? Sie haben Rjs Vorlagen richtig? Sie haben die Links remote gemacht - was bedeutet, dass Sie eine js-Anfrage senden und der Browser wird nur seine Ansicht ändern, wenn Sie ihm eine js zurücksenden, die ihn dazu auffordert. Alternativ können Sie dies sehr schnell beheben, indem Sie "remote: true" von den Links entfernen, und dann wird die Umleitung einfach funktionieren ... –