2016-07-24 8 views
0

Zeige alle Benutzer Fotos funktioniert, aber zeigt bestimmte Fotos von einem Benutzer nicht (zeigt fehlende Bild anstelle von denen durch id). Route für bestimmte Bild ist /users/:user_id/photos/:id. Das ist mein Fotos Controller:Büroklammer zeigt fehlendes Bild anstelle von definiert

class PhotosController < ApplicationController 

    before_action :find_user, only: [:index, :new, :create, :update] 
    before_action :find_photo, only: [:show, :destroy] 

    def index 
     @photos = @user.photos 
    end 

    def new 
     @photo = @user.photos.build 
    end 

    def show 
    end 

    def create 
     @photo = Photo.new(photo_params) 

     if @photo.save 

      if params[:images] 
       params[:images].each { |image| 
        @user.photos.create(image: image) 
       } 
      end 

      redirect_to :action => :index 

     else 
      render 'new' 
     end 
    end 

    def update 
     @photo = @user.photos.find(params[:id]) 

     if @photo.update 
      redirect_to user_photos 
     else 
      render 'edit' 
     end 
    end 

    def destroy 
     @photo.destroy 

     redirect_to user_photos 
    end 

    private 

    def find_user 
     @user = User.find(params[:user_id]) 
    end 

    def find_photo 
     @photo = Photo.find(params[:id]) 
    end 

    def photo_params 
     params.require(:photo).permit(:title, :image, :user_id) 
    end 
end 

Das ist mein Benutzer Controller:

class UsersController < ApplicationController 

    def index 
     @search = User.search(params[:q]) 

     if @search 
      @users = @search.result.paginate(:per_page => 10, :page => params[:strana]) 
     else 
      @users = User.all.paginate(:per_page => 10, :page => params[:strana]).order("created_at DESC") 
     end 
    end 

    def new 
     @user = User.new 
    end 

    def create 
     @user = User.new(user_params) 

     if @user.save 
      redirect_to @user 
     else 
      render 'new' 
     end  
    end 

    def show 
     find_params 
     @photos = @user.photos 
    end 

    def edit 
     find_params 
    end 

    def update 
     find_params 

     if @user.update(user_params) 
      redirect_to @user 
     else 
      render 'edit' 
     end 
    end 

    def destroy 
     find_params 
     @user.destroy 

     redirect_to users_path 
    end 

Dies ist Fotos/zeigen Ansicht:

<%= image_tag @photo.image.url(:thumb) %> 

Dies ist Fotos/index Ansicht:

<% @user.photos.each do |photo| %> 

    <%= image_tag(photo.image) %> 
    <%= photo.title %> 

<% end %> 

Routen verschachtelt sind:

resources :users do 
    resources :photos 
end 
+0

Wenn Sie versuchen, alle Fotos eines bestimmten Benutzers zu zeigen, sollte es in der Benutzershowseite nicht in Fotos/Shows sein. –

+0

Nun, meine Struktur der App ist ein wenig anders: auf Benutzer/Show sind Benutzerinformationen, und es gibt eine Schaltfläche _Photos_, die zum Index der Fotos dieses Benutzers sendet. Was auch immer, daran ändert sich nichts, denn ich muss immer '/ users /: user_id/photos /: id' aufrufen, um ein bestimmtes Foto zu sehen. – Nikola

Antwort

1

Problem gelöst ist - wurden erste Bilder eigentlich nicht hochgeladen (habe ich vergessen, Validierung hinzufügen), so dass sie hatten Bild Link-Feld Nullwert in.

+0

Geben Sie Ihrer Antwort das grüne Häkchen, um sie aus der Warteschlange für wartende Fragen zu entfernen. – user2792268

+0

Ich kann es jetzt nicht tun - ich muss noch einen Tag warten, um meine eigene Antwort zu akzeptieren. – Nikola

Verwandte Themen