0

モデル プレゼンテーションにいくつかの画像とビデオを追加しようとしましたが、フォームを送信すると、コンソールに次のように表示されます。

Unpermitted parameters: video 

Unpermitted parameters: image

プレゼンテーション.rb

class Presentation < ActiveRecord::Base
  belongs_to :formation
  has_many :videos, :dependent => :destroy
  has_many :slides, :dependent => :destroy

  accepts_nested_attributes_for :videos
  accepts_nested_attributes_for :slides
end

スライド.rb

class Slide < ActiveRecord::Base
  belongs_to :presentation

  has_attached_file :image
  do_not_validate_attachment_file_type :image
end

video.rb :

class Video < ActiveRecord::Base
  belongs_to :presentation
  has_attached_file :video
  do_not_validate_attachment_file_type :video
end

プレゼンテーションコントローラー:

class PresentationController < ApplicationController
  def new


   @formation = Formation.find(params[:id])
    @presentation = Presentation.new
    @presentation.videos.build
    @presentation.slides.build
  end

  def create
    @formation = Formation.find(params[:id])
    @presentation = @formation.presentations.new(presentation_params)
    if @presentation.save
      redirect_to formations_show_path(@formation)
    else
      render action: 'new'
    end
  end

  def destroy
    @formation = Formation.find(params[:id])
    Presentation.find(params[:pres]).destroy
    redirect_to formations_show_path(@formation)
  end

  private

  def presentation_params
    params.require(:presentation).permit(:name, :description,videos_attributes: [:video], slides_attributes: [:image])
  end
end

フォーム:

<div class="container contenu">
   <div class="row">
      <h1>Création d'une présentation</h1>
        <%= form_for(@presentation, :url => presentations_create_path, html: { multipart: true }, :class=>"form-horizontal") do |f| %>
          <% if @presentation.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@presentation.errors.count, "error") %> prohibited this survey from being saved:</h2>
<ul>
<% @presentation.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>



<div class="form-group">
 <%= f.label :name, :class => "col-sm-2 control-label" %>
 <div class="col-sm-10">
   <%= f.text_field :name, :class =>"form-control" %>
 </div>
</div>
<div class="form-group">
  <%= f.label :description, :class => "col-sm-2 control-label" %>
  <div class="col-sm-10">
     <%= f.text_area :description, :row => "3",:class =>"form-control" %>
  </div>
</div>
<div class="form-group">
   <%= f.fields_for :videos do |v| %>
    <%= v.label :video, :class => "col-sm-2 control-label" %>
    <div class="col-sm-10">
      <%= v.file_field :video, multiple: true,  :class =>"form-control"%>
    </div>
    <% end %>
</div>
<div class="form-group">
   <%= f.fields_for :slides do |s| %>
    <%= s.label :image, :class => "col-sm-2 control-label" %>
    <div class="col-sm-10">
      <%= s.file_field :image, multiple: true, :class =>"form-control"%>
    </div>
    <% end %>
</div>
<div class="form-group">
 <div class="col-sm-offset-2 col-sm-10">
    <%= f.submit :class => "btn btn-default"%>
 </div>
</div>
        <% end %>
        <%= link_to 'retour', formations_show_path(@formation) %>
   </div>
</div>

Unpermitted parameterエラーを回避するにはどうすればよいですか?

1 つのスライドと 1 つのビデオだけで試してみると、問題ありません。しかし、フォームに multiple: true を追加すると機能しません。

ありがとう

更新 それは大丈夫です私はそのようなフォームに入力されたファイルの名前を変更しようとしました

  <%= v.file_field :video, multiple: true,:name =>"presentation[videos_attributes][][video]",  :class =>"form-control"%>

そしてそれは動作します:)

スコーン。

4

0 に答える 0