2016-08-10 7 views
1

Ich bin neu bei Schienen und Erstellen einer Immobilienanwendung, die Informationen über Wohnungen speichern.So speichern Sie mehrere Bilder zu einer Ressource in Schienen

Ich habe ein Apartment-Modell, Ansichten und einen Controller, die funktionieren, damit ich Wohnungen CRUD kann.

Jetzt möchte ich die Möglichkeit hinzufügen, mehrere Bilder zu einer Wohnung hinzuzufügen.

Ich habe die Gem Carrierwave, Mini_magick und Nebel Edelsteine ​​installiert.

Ich erstellte ein Image-Modell mit einer Bild (String) -Spalte und und Apartment_id (Integer) -Spalte. Dann habe ich eine becomes_to/has_many-Beziehung zwischen Image und Apartment erstellt.

Meine Frage ist: Wie kann ich eine Instanz des Image-Modells in der Ansicht "Apartment erstellen" erstellen?

Ich gehe davon würde ich so etwas in der Wohnung Controller tun würde, aber ich bin mir nicht sicher:

def new 
    @apartment = Apartment.new 
    end 

    def create 
    @apartment = current_user.apartments.new(apartment_params) 
    **@image = @apartment.images.new(?)** 

    if @apartment.save **&& @image.save** 
     flash[:notice] = "Congratulations! Your apartment has been added." 
     redirect_to apartments_path 
    else 
     flash[:error] = "There was an error saving your listing. Please try again." 
     render :new 
    end 
    end 

private 

def apartment_params 
    params.require(:apartment).permit(:street, :from_date, :to_date, :to_date_open, :flex_dates, :price, :price_neg, :agent_fee, :furnished, :package, :flights, :beds, :baths, :description) 
end 

Auch ich bin nicht sicher, wie Sie den Code in der Ansicht zu ändern:

Jede Anleitung zum Hinzufügen von Bildern beim Erstellen einer neuen Wohnung wäre großartig.

Vielen Dank im Voraus!

Antwort

0

Wie ich dieses Problem in der Vergangenheit angegangen bin, zwei haben zwei andere Modelle. Ich würde ein Modell erstellen, das eine Galerie ist und eines, das ein Foto ist.

Das Foto kann mehr Informationen darüber haben Sie kümmern sich um Name oder Beschreibung. Das Foto verweist auf die Galerie, damit es weiß, zu welcher Galerie es gehört.

Die Galerie hat dann nur einen Namen und Links zu einer Wohnung. Ich mag es, es zu trennen, für den Fall, dass Sie etwas Spezielles machen möchten, zum Beispiel, welches Foto zuerst in einer Galerie ist oder so.

Wenn es dir egal ist, dann könntest du einfach ein anderes Crud-Modell mit Fotos machen und ihm die apartment_id geben.

Ich würde mit Foto-Uploads später und nicht zu Beginn der Auflistung der Wohnung, es wird dazu beitragen, die Menschen mehr investiert, wenn die Barriere für die Auflistung einer Wohnung niedriger ist.

So sind die Befehle, die ich laufen würde, wenn Sie die es mit einer Galerie tun sind

rails g scaffold gallery name:string apartment:belongs_to

rails g scaffold photo name:string information:text photo_url:string gallery:belongs_to

oder ohne Galerie

rails g scaffold photo name:string information:text photo_url:string apartment:belongs_to

Sie haben um das Foto-Modell und den Controller zu aktualisieren, um danach mit carrierwave zu arbeiten das obwohl.

+0

Danke @salinn !! Die Art und Weise, wie Sie die Beziehungen beschrieben haben, ist hilfreich. Könnten Sie mir eine Anleitung geben, wie Sie den Apartment-Controller aktualisieren, um Crude für Fotos und Galerien zu implementieren? –

+0

@NechamaGoldman so, wie ich beschrieben habe, müsste man nichts mit dem Apartment-Controller aktualisieren. Was Sie tun würden, ist Ihre normalen Schritte zu gehen, dann auf der Show-Seite für den Controller würden Sie einen Fotoabschnitt hinzufügen und das Formular für Fotos hinzufügen. Ich glaube nicht, dass Sie hier eine Galerie brauchen. Ist das sinnvoll? –

Verwandte Themen