Bonjour,

Je suis assez nouvelle dans le développement web et je me trouve face à un problème que je ne parviens pas à résoudre avec rails 4:

J'ai créé une sorte de "blog" où l'admin va publier des articles avec une photo principale et d'autres photos pour la galerie.

J'ai créé deux uploaders avec carrierawve pour mes images, et du coup j'ai deux modèles. Un pour l'article avec son titre son contenu et son image principale, et l'autre modele en guise d'attachment de plusieurs photos pour ajouter à l'article.
Les problèmes:
Mon uplader sensé etre multiple ne prend qu'une seule image...
Si je ne remplis pas un champs alors que j'ai tout mis en 'required' j'ai l'erreur :
NoMethodError in ProgressesController#create
undefined method `model_name' for nil:NilClass

Nom : Capture d’e?cran 2016-09-01 a? 18.51.05.png
Affichages : 454
Taille : 66,2 Ko

Voici mon formulaire:
views/progresses/new.html.slim
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
= simple_form_for @progress do |f|
   =f.input :title
   =f.input :date
   =f.input :content
   =f.input :main_image
   = simple_fields_for @progress_attachment do |f|
     =f.input :image, multiple: true, name: "progress_attachments[image][]"
   =f.button :submit
controller
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
class ProgressesController < ApplicationController
 
  def index
    @progresses = Progress.all
  end
 
  def show
    @progress = Progress.find(params[:id])
    @progress_attachments = @progress.progress_attachments.all
  end
 
  def new
     @progress = Progress.new
     @progress_attachment = @progress.progress_attachments.build
  end
 
  def create
     @progress = Progress.new(progress_params)
 
     respond_to do |format|
       if @progress.save
         params[:progress_attachments]['image'].each do |a|
            @progress_attachment = @progress.progress_attachments.create!(:image => a)
         end
         format.html { redirect_to progresses_path, notice: 'Progress was successfully created.' }
       else
         format.html { render action: 'new' }
       end
     end
   end
 
   private
     def progress_params
        params.require(:progress).permit(:title, :content, :date, :main_image, progress_attachments_attributes: [:id, :progress_id, :image])
     end
  end
end
mon second controller
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
class ProgressesController < ApplicationController
 
  def index
    @progresses = Progress.all
  end
 
  def show
    @progress = Progress.find(params[:id])
    @progress_attachments = @progress.progress_attachments.all
  end
 
  def new
     @progress = Progress.new
     @progress_attachment = @progress.progress_attachments.build
  end
 
  def create
     @progress = Progress.new(progress_params)
 
     respond_to do |format|
       if @progress.save
         params[:progress_attachments]['image'].each do |a|
            @progress_attachment = @progress.progress_attachments.create!(:image => a)
         end
         format.html { redirect_to admin_progresses_path, notice: 'Progress was successfully created.' }
       else
         format.html { render action: 'new' }
       end
     end
   end
 
   def update
     respond_to do |format|
       if @progress.update(article_params)
         format.html { redirect_to @progress, notice: 'Article was successfully updated.' }
         format.json { render :show, status: :ok, location: @progress }
       else
         format.html { render :edit }
         format.json { render json: @progress.errors, status: :unprocessable_entity }
       end
     end
   end
 
   def destroy
     @progress.destroy
     respond_to do |format|
       format.html { redirect_to articles_url, notice: 'Article was successfully destroyed.' }
       format.json { head :no_content }
     end
   end
   private
     def progress_params
        params.require(:progress).permit(:title, :content, :date, :main_image, progress_attachments_attributes: [:id, :progress_id, :image])
     end
 
end
Mes models
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
class ProgressAttachment < ActiveRecord::Base
  mount_uploader :image, ImageUploader
  belongs_to :progress
  validates :image, presence: true
end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
progress.rb
 
 class Progress < ActiveRecord::Base
   default_scope ->{order(created_at: :DESC)}
   has_many :progress_attachments
   accepts_nested_attributes_for :progress_attachments
   mount_uploader :main_image, ImageUploader
   validates :main_image,   presence: true
   validates :title,   presence: true
   validates :content,  presence: true
   validates :date,    presence: true
 end
J'espère que vous pourrez m'aider ! Dans l'attente de vous lire je vous remercie d'avance