Das Problem ist, dass die Methode previous_modal das vorherige Foto in der Datenbank zurückgibt, nicht @user vorheriges Foto.Wie bekomme ich das vorherige Foto des Benutzers?
Zum Beispiel, wenn @user hat Fotos mit IDs 10, 9, 8, 7, 6, 1 und ich öffnen das modale für Foto-ID 6 und ich klicke vorherige, setzt es die href auf 5, statt 1.
UsersController
def show
@user = User.find(params[:id])
@photos = @user.photos.approved.order('created_at desc').paginate(page: params[:page], per_page: 9)
respond_to do |format|
format.html
format.js
end
end
users/show.html.erb
<% @photos.in_groups_of(3, false).each do |group| %>
<% group.each do |photo| %>
...
<div class="modal" id=<%="#{photo.id}"%> tabindex="-1" role="dialog">
...
<a class="previouslink" data-dismiss="modal" data-toggle="modal" href=<%="#"+"#{photo.previous_modal.id}"%>>
...
class Photo
def previous_modal
if self.class.approved.where("id < ?", id).last == nil
return self
else
return self.class.approved.where("id < ?", id).last
end
end
Das bin ich die gleichen Ergebnisse wie mein Code gibt. Es gibt mir das vorherige Foto in der Datenbank, nicht das vorherige Foto von '@ user'. –
werfen Sie einen Blick auf die Notiz bearbeiten, bitte! –
Entschuldigung für die Verwirrung. Es gibt kein Array. Ich habe nur gesagt, dass der Benutzer Fotos hochgeladen hat und diese Fotos diese IDs haben. Ich glaube, ich habe es gelöst. Danke für die Hilfe, ich habe noch ein paar Dinge aus deiner Antwort gelernt. Entschuldigung für schlechte Formulierung in Frage. –