I am trying to create a product page to create in rails. This includes adding multiple images and text fields. I have one model for products and one for photos. I use a paperclip gem to upload photos. But I donβt see the pictures when I look at the product page. Photos are not saved in the database.
PS I am using HAML.
app / views / products / show.html.haml
%b Name = @product.name %br %b Description = @product.description %br - @product.photos.each do |photo| = image_tag photo.image.url
application / controllers / products_controller
class ProductsController < ApplicationController before_filter :require_login before_filter :current_user, only: [:create, :destory] def new @product = Product.new @photo = Photo.new 5.times { @product.photos.build } end def create @photo = current_user.photos.build(params[:photo]) @product = current_user.products.build(params[:product]) if @product.save render "show", :notice => "Sale created!" else render "new", :notice => "Somehting went wrong!" end end def show @product = Product.find(params[:id]) end
application / models / photo
class Photo < ActiveRecord::Base attr_accessible :product_id belongs_to :product has_attached_file :image, :styles => { :thumb=> "100x100#", :small => "300x300>", :large => "600x600>" } end
application / models / product
class Product < ActiveRecord::Base attr_accessible :description, :name, :price, :condition, :ship_method, :ship_price, :quantity, :photo has_many :photos, dependent: :destroy accepts_nested_attributes_for :photos belongs_to :user end
user model
class User < ActiveRecord::Base attr_accessible :email, :password, :password_confirmation, :name attr_accessor :password has_many :products, dependent: :destroy has_many :photos,:through=>:products
applications / products / new.html.haml
= form_for @product, :html => { :multipart => true } do |f| %p = fields_for :photos do |f_i| =f_i.file_field :image