2017-03-15 13 views
0

私がアップロードした画像を保存しようとしましたが、私のログは私を送って:許可されていないパラメータ - Railsの5

許可されていないパラメータ:

をdesign_filesしかし、これは私のコントローラハッシュパラメータであります私に返信しています:

"design_files"=>[#<ActionDispatch::Http::UploadedFile:0x007fce350cbcb8 @tempfile=#<Tempfile:/var/folders/0w/pznf2h6j0q9gqcbcthg1kgm40000gn/T/RackMultipart20170315-5734-26bwb.png>, @original_filename="ebf84ecaf15f684b53f18b9313cd1325.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"cover[design_files][]\"; filename=\"ebf84ecaf15f684b53f18b9313cd1325.png\"\r\nContent-Type: image/png\r\n">] 

ラムdesign_filesは存在しますが、結果は配列であり、そこから問題が発生する可能性があります。

私はあなたが私のコードの残りの部分を見てみましょう:

covers_controller.rb

class CoversController < ApplicationController 
    before_action :set_cover, only: [:show, :edit, :update, :destroy] 

    def new 
    @book = set_book 
    @cover = @book.build_cover 
    end 

    def create 
    @book = set_book 
    @cover = @book.build_cover(cover_params) 
    if @cover.save! 
     redirect_to new_command_path(commandable_id: @cover, commandable_type: @cover.class) 
    else 
     render :new 
    end 
    end 

    .... 

    private 
    ... 

    def cover_params 
    params.require(:cover).permit(:design_files) 
            # according to other solutions find on stack I tried : design_files_attributes: {:design_files}, also tried {design_files: :preview}         
    end 
end 

cover.rb

class Cover < ApplicationRecord 
    validates_presence_of :design_files 
    has_attached_file :design_files 
    do_not_validate_attachment_file_type :design_files 
end 

カバー/ _form

= form_for cover, html: { multipart: true } do |f| 
    - if cover.errors.any? 
    #error_explanation 
     h2 
     = pluralize(cover.errors.count, "error") 
     | prohibited this cover from being saved: 
     ul 
     - cover.errors.full_messages.each do |message| 
      li 
      = message 

    = f.label :design_files 
    = f.file_field :design_files, multiple: true 

    .actions 
    = f.submit 

答えて

0

はあなたのログを確認します(multipleオプションがtrueに設定されているため)

"design_files"=>[#<ActionDispatch::...>] 

design_filesは配列です。あなたは、配列を許可する必要があります。

def cover_params 
    params.require(:cover).permit(design_files: [])              
end 

How to permit an array?

+0

あなたの答えをいただき、ありがとうございます。私はそれを試しました、私の主な投稿を参照してください – Orsay

+0

@Orsayそれは別の質問です、それですか? Stackoverflowはあなたのデバッグツールではありません、_problem_を理解しようとしてください、Googleはあなたの友人です。ハッピーコーディング! –

関連する問題