How to upload multiple image by selecting "ctrl + selction key" at same time.
CarrierWave
This gem provides a simple and extremely flexible way to upload files from Ruby applications.
This gem has convenient support for multiple file upload fields.
Following are the steps:
Create post scaffold
Create post_attachment scaffold
In post.rb
In post_attachment.rb
In post_controller.rb
In views/posts/_form.html.haml
In views/posts/show.html.haml
CarrierWave
This gem provides a simple and extremely flexible way to upload files from Ruby applications.
This gem has convenient support for multiple file upload fields.
Following are the steps:
For Complete Source code click here
In Rails, add it to your Gemfile:
gem 'carrierwave'
bundle install
rails generate uploader photo
Create post scaffold
rails generate scaffold post title:string
Create post_attachment scaffold
post_attachment post_id:integer photo:string rake db:migrate
In post.rb
class Post < ActiveRecord::Base has_many :post_attachments accepts_nested_attributes_for :post_attachments end
In post_attachment.rb
class PostAttachment < ActiveRecord::Base mount_uploader :photo, PhotoUploader belongs_to :post end
In post_controller.rb
def show @post_attachments = @post.post_attachments.all end
def new @post = Post.new @post_attachment = @post.post_attachments.build end def create @post = Post.new(post_params) respond_to do |format| if @post.save params[:post_attachments]['photo'].each do |a| @post_attachment = @post.post_attachments.create!(:photo => a) end format.html { redirect_to @post, notice: 'Post was successfully created.' } else format.html { render action: 'new' } end end end private def post_params params.require(:post).permit(:title, post_attachments_attributes: [:id, :post_id, :photo]) end
In views/posts/_form.html.haml
= form_for(@post, :html => { :multipart => true }) do |f| .field = f.label :title = f.text_field :title = f.fields_for :post_attachments do |p| .field = p.label :photo = p.file_field :photo, :multiple => true, name: "post_attachments[photo][]" .actions = f.submit
In views/posts/show.html.haml
%p#notice= notice %p %strong Title: = @post.title - @post_attachments.each do |p| = image_tag p.photo_url = link_to "Edit Attachment", edit_post_attachment_path(p) = link_to 'Edit', edit_post_path(@post) | \#{link_to 'Back', posts_path}Update form to edit an attachment views/post_attachments/_form.html.haml
= image_tag @post_attachment.photo = form_for(@post_attachment) do |f| .field = f.label :photo %br/ = f.file_field :photo .actions = f.submit Now, update method in post_attachment_controller.rb
def update respond_to do |format| if @post_attachment.update(post_attachment_params) format.html { redirect_to @post_attachment.post, notice: 'Post attachment was successfully updated.' } end end end
For Complete Source code click here
No comments:
Post a Comment