2014-06-21 26 views
6

Bir özniteliği olan Upload ActiveModel sınıfım var: filename.StrongParameters ile eksik gerekli paramları ele almanın en iyi yolu?

class UploadsController < ApplicationController 
    def create 
    @upload = Upload.new(upload_params) 
    # ... 
    end 

    private 

    def upload_params 
    params.require(:upload).permit(:filename) 
    end 
end 

ben ile geldim en iyi çözüm upload_params yöntemde rescue şudur: Sadece bir nitelik formu benim denetleyicisi aşağıdaki kodu kullanırken hata yükseltme biter üzerinde alanı boş bırakarak var yana örneğin:

= simple_form_for upload do |f| 
    = f.input :filename, as: :hidden, input_html: { value: '' } 
    = f.input :filename, as: :file 
    = f.submit 'Upload' 
0123: Alternatif

def upload_params 
    params.require(:upload).permit(:filename) rescue ActionController::Parameters.new 
end 

, ben filename alanı her zaman, mesela ne olursa olsun bir şey ayarlanmış olduğundan emin olmak için gizli bir alan eklemek herhalde

Kullanıcının form özniteliklerinden hiçbirini doldurmama konusunda daha iyi bir yolu var mı?

cevap

7

Sorgum gönderildikten hemen sonra the answer bulduğum rakamlar. :)

O ActionController::StrongParameters#fetch yöntemle yapar gerekenden, ör .:

params.fetch(:upload, {}).permit(:filename) 
benziyor

İlgili konular