2016-08-04 24 views
0

Ich brauche Hilfe bei der Codierung eines Arrays, das Bilder anzeigt, die vom Benutzer geladen wurden. Ich habe Foren und Tutorials durchsucht und bin bereit zuzugeben, dass ich feststecke! Ich kann sehen, dass die Dateien in die Datenbank geladen werden, aber ich kann nicht darauf zugreifen.Array zeigt keine Bilder an

Vielen Dank für Ihre Hilfe.

ich verwende rails 5 und ruby 2.3.1p112

gem 'carrierwave', github: 'carrierwaveuploader/carrierwave' 
gem 'sqlite3' 

ich habe:

class Micropost < ApplicationRecord 
    belongs_to :user 
    default_scope -> { order(created_at: :desc) } 
    validates :user_id, presence: true 
    validates :content, presence: true, length: { maximum: 200 } 
    mount_uploaders :pictures, PictureUploader 
end 

class MicropostController < ApplicationController 
. 
. 
    def create 
    @micropost = current_user.microposts.build(micropost_params) 
. 
. 
params.require(:micropost).permit(:content, {pictures: [ ]}) 

Meine Form:

<%= f.file_field :pictures, multiple: true, accept: 'image/jpeg,image/gif,image/png' %> 

Meine Ansicht:

<%= image_tag micropost.pictures_urls %> 

Meine Terminal Antwort:

Started GET 
"/images/[%22/app/assets/images/37/%5B%22Thankyou.jpg%22%5D%22]" for 
::1 at 2016-08-03 18:11:08 -0700 Started GET 
"/images/[%22/app/assets/images/33/%5B%22Thankyou.jpg%22%5D%22]" for 
::1 at 2016-08-03 18:11:08 -0700 Started GET 
"/images/[%22/app/assets/images/35/%5B%22detailsaboutus.jpg%22%5D%22]" 
for ::1 at 2016-08-03 18:11:08 -0700 ActionController::RoutingError 
(No route matches [GET] 
"/images/[%22/app/assets/images/37/%5B%22Thankyou.jpg%22%5D%22]"): 
Started GET 
"/images/[%22/app/assets/images/36/%5B%22GPcolors4.jpg%22%5D%22]" for 
::1 at 2016-08-03 18:11:08 -0700 Started GET 
"/images/[%22/app/assets/images/34/%5B%22GP-digital-logoclear.gif%22%5D%22]" 
for ::1 at 2016-08-03 18:11:08 -0700 . . . . 
+0

http://stackoverflow.com/a/32493672/6665229 – time2learn

Antwort

0

Diese sehen aus wie Sie Datei mit has_many Beziehung laden, so dass Sie mehrere Bilder und seine eine Reihe von Bild Urls

Sie dieses

<% micropost.pictures_urls.each do |url| %> 
<%= image_tag url %> 
<%end%> 
+0

Jayesh-sorry für die späte Antwort, ich musste eine Pause machen. Danke für den Tipp - das Problem bleibt bestehen. b/c von dir Ich entdeckte, dass der image_tag nicht auf die richtige zeigt. – time2learn

1

kann tun bekommen Um dieses Problem zu lösen, habe ich das Modell aktualisiert:

class Micropost < ApplicationRecord 
    belongs_to :user 
    default_scope -> { order(created_at: :desc) } 
    validates :user_id, presence: true 
    validates :content, presence: true, length: { maximum: 200 } 
    mount_uploaders :pictures, PictureUploader 
    serialize :pictures, Array     #updated code 
end 

Nach Ansicht:

<% @micropost.pictures.each do |picture| %> 
    <article> <!--used to stylize view --> 
    <%= image_tag(picture.url) %> 
    </article> 
<% end %> 

Auch wenn ich die Micropost Modell für die Produktion in AWS S3 und psql db erstellt: Bilder ist Typ 'Text':

rails g model Micropost pictures:text... 

oder rails g migration add_field_to_microposts pictures:text

Öffnen Sie die Migration

add_column :microposts, :pictures, :text 

more info here

dann rails db:migrate

Hoffnung hilft dies einen weiteren Rookie!