2017-01-31 11 views
0

Проблема заключается в «сильных параметрах» в рельсах. Я использую стрекоза для загрузки изображений.отсутствует или значение пуст: галерея

Проблема в том, что если я отправлю пустую форму, я не получаю никаких параметров для обработки ошибок. В чем причина?

Контроллер:

Существует еще и метод «Создать», который сохраняет изображение в базе данных и отправляет пользователя на страницу с фотографиями.

def index 
    @gallery = Gallery.new 
    @galleries = Gallery.all 
end 

def create 
    @gallery = Gallery.new(gallery_params) 

    if @gallery.save 
    redirect_to galleries_path, flash: { success: 'Your Image was successfully save.' } 
    else 
    redirect_to :back,   flash: { alert: "Your Image don't save." } 
    end 
end 

def gallery_params 
    params.require(:gallery).permit(:image) 
end 

Просмотров:

= form_for @gallery do |f| 
    = f.file_field :image 
    = f.submit 'Submit', class: 'btn bth-primary btn-lg' 

Параметры:

{"utf8"=>"✓", "authenticity_token"=>"8eotQtkj8SElqJLdHuOX8r+dWrCJRWTmVcyfd1mSLD/8MjWw/ElH/HCxZFSJ6oOWaxpbLbn4kAg5nlFycsgjHg==", "commit"=>"Submit"} 
+0

Что вы подразумеваете под «Я не получаю никаких параметров для обработки ошибок»? –

+1

то, что вы получаете, прекрасно и, как и ожидалось. –

+0

Если вы имеете в виду, что вы не получили никакой ошибки проверки, возможно, это связано с полем 'image', которое не является обязательным. Вы должны опубликовать свою модель «Галерея» –

ответ

1

Это ожидаемое поведение, обратитесь к документации по ActionController::Parameters#require

То, что я обычно делаю в таких случаях поймать исключение и отображение флэш-сообщения для уведомления пользователя. Вы также можете вручную добавить ошибку в модель.

def create 
    @gallery = Gallery.new(gallery_params) 

    if @gallery.save 
    redirect_to galleries_path, flash: { success: 'Your Image was successfully save.' } 
    else 
    redirect_to :back, flash: { alert: "Your Image don't save." } 
    end 
rescue ActionController::ParameterMissing => e 
    redirect_to :back, flash: { alert: "Please attach an image." } 
end