2014-11-06 3 views
0

Я продолжаю получать ошибку params при попытке загрузить файл с Rails и Carrierwave. Нет ассоциации, ничего полиморфного, только простая модель Attachment, которая принадлежит ни к чему:Параметр Unpermitted с Carrierwave

контроллер:

class AttachmentsController < ApplicationController 

def create 
    @attachment = Attachment.new(attachment_params) 
    if @attachment.save 
     flash.now[:notice] = 'Done!' 
     redirect_to root_path 
    else 
     flash.now[:error] = 'Error.' 
     redirect_to root_path 
    end 
end 

private 

    def attachment_params 
     params.require(:attachment).permit(:file) 
    end 

журнал:

Started POST "/attachments" for 127.0.0.1 at 2014-11-06 15:11:48 +0300 
Processing by AttachmentsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"B3jUUOcHivc4m1SsrveIznfaXbSEnmdah1c1hrhCSe4=", "attachment"=>{"attachment"=>#<ActionDispatch::Http::UploadedFile:0x007f9b31c65b00 @tempfile=#<Tempfile:/var/folders/z7/241wfhj97nx98q3zzkpvj_sm0000gn/T/RackMultipart20141106-4801-1c6vtqz>, @original_filename="нованет 2.xls", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"attachment[attachment]\"; filename=\"\xD0\xBD\xD0\xBE\xD0\xB2\xD0\xB0\xD0\xBD\xD0\xB5\xD1\x82 2.xls\"\r\nContent-Type: application/octet-stream\r\n">}, "commit"=>"Upload my list"} 
Unpermitted parameters: attachment 
    (0.6ms) BEGIN 
    SQL (0.7ms) INSERT INTO "attachments" ("created_at", "updated_at") VALUES ($1, $2) RETURNING "id" [["created_at", "2014-11-06 12:11:48.966191"], ["updated_at", "2014-11-06 12:11:48.966191"]] 
    (0.4ms) COMMIT 
Redirected to http://localhost:3000/ 
Completed 302 Found in 29ms (ActiveRecord: 1.8ms) 

Обновлено с моделью:

class Attachment < ActiveRecord::Base 
    mount_uploader :file, FileUploader 
end 

Загружено:

class FileUploader < CarrierWave::Uploader::Base 

    storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    def extension_white_list 
    %w(pdf xls xlsx csv txt doc docx) 
    end 

end 

ответ

3

Просто измените

params.require(:attachment).permit(:file) 

с

params.require(:attachment).permit(:attachment) 

Поскольку вы получаете параметры: "attachment"=>{"attachment"=>#<ActionDispatc ...

Я не вижу вашу точку зрения, но я предполагаю, что вы делаете это:

<%= f.file_field :attachment %> 

Вместо:

<%= f.file_field :file %> 

Если вы, исправить вид и разрешение: файл.

+0

Я попробовал его, он бросает: "неизвестный атрибут: вложение", журнал гласит: Started POST "/ вложения" для ... обработки по AttachmentsController # создать в HTML Параметры: { "utf8" => "✓ "," authenticity_token "=>" ... "," attachment "=> {" attachment "=> # " Загрузить мой список "} Завершено 500 Внутренняя ошибка сервера в 100 мс ActiveRecord :: UnknownAttributeError - неизвестный атрибут: attachment –

+0

Можете ли вы добавить модель и посмотреть на вопрос, пожалуйста? –

+0

обновленный вопрос –

Смежные вопросы