10

Problem z przesuwaniem spinacza w Railsach 4 - niepowodzenie w ForbiddenAttributesError (silne sprawdzanie poprawności parametrów). Miej najnowszy klejnot spinacza i najnowsze szyny 4 klejnoty.Spinacz w szynach 4 - Atrybuty zabronione o silnych parametrach

Mam modelu "Image" z załączonym plikiem "upload" w modelu

has_attached_file :upload, :styles => { :review => ["1000x1200>", :png], :thumb => ["100x100>", :png]}, :default_url => "/images/:style/missing.png" 

Model została stworzona za pomocą rusztowania, i dodałem migracje spinacza. Formularz częściowy został zaktualizowany do korzystania

f.file_field :upload 

forma generuje co wydaje się być typowy zestaw spinacza params, z param obrazu zawierającego przesyłanie. Przechodzę również parametr transaction_id w modelu obrazu, więc powinno być dozwolone. Ale to wszystko - obraz i identyfikator transakcji.

Spodziewałem się, aby móc napisać następujących w moim kontrolera do białej mój post - ale nie powiodło się:

def image_params 
    params.require(:image).permit(:transaction_id, :upload) 
end 

Więc mam bardziej wyraźne - ale to nie powiodło też:

def image_params 
    params.require(:image).permit(:transaction_id, :upload => [:tempfile, :original_filename, :content_type, :headers]) 
end 

Jestem trochę sfrustrowany tym, że Rails 4 nie pokazuje mi, co ForbiddenAttributesError zawodzi w środowisku programistycznym - powinien pokazywać błąd, ale tak nie jest - byłby to łatwa łatka ułatwiająca rozwój. A może wszyscy inni dostają coś, czego mi brakuje! Wielkie dzięki za pomoc.

Odpowiedz

9

Rozumiem, co się stało teraz - i zostawię to w nadziei, że pomoże komuś innemu. Byłem przenoszenie kodu z szyn 3 projektu i nieodebranych linię, która stworzyła obraz:

@image = current_user.images.new(params[:image]) 

w szynach 4 jest nieprawidłowy (wierzę). Zaktualizowałem do

@image = current_user.images.new(image_params) 

i to rozwiązało mój problem.

+3

Co w końcu wprowadziłeś w swoim params.permit(), aby to zadziałało? – adamyonk

+3

w moim przypadku miałem model "Image" z załącznikiem do spinacza "image_file". Migracja spinacza tworzy kilka kolumn w db, takich jak image_file_file_name itp., Ale wszystko, co musisz zrobić, to params.require (: image) .permit (: image_file), aby umożliwić spinaczowi działanie magii. – Eskim0

+1

Dziękuję bardzo! To nie jest intuicyjne, ale działa :) – duhaime

1

Wygląda na to, że Twój pierwszy powinien zadziałać. Właśnie tego używam do moich projektów.

class GalleriesController < ApplicationController 

    def new 
    @gallery = Gallery.new 
    end 

    def create 
    @user.galleries.new(gallery_params) 
    end 

    private 

    #note cover_image is the name of paperclips attachment filetype(s) 
    def gallery_params 
    params.require(:gallery).permit(:cover_image) 
    end 
end 
Powiązane problemy