Rails validates_presence_of не работает с текстовой областью формы HTML - PullRequest
0 голосов
/ 06 апреля 2011

Среда: Rails 2.3.11 с MySQL 5.0

Вот моя модель слайд-шоу:

class Slideshow < ActiveRecord::Base
  validates_presence_of :title, :description
end

Использование консоли, если я запускаю:

Slideshow.new(:title => "", :description => "").save!

возвращает:

Validation failed: Title can't be blank, Description can't be blank

, что правильно.

Однако, когда я отправляю пустую HTML-форму для действия создания:

def create
  @slideshow = Slideshow.new(params[:slideshow])
  if @slideshow.save
    redirect_to(...)
  else
    render(:action => 'new')
  end
end

только :title поле не проходит проверку.Я подтвердил, что в параметрах передается следующее:

Parameters: {"commit"=>"Submit", "slideshow"=>{"title"=>"", "description"=>""}, "action"=>"create", "controller"=>"manage/slideshows"}

Почему поле описания НЕ не проходит проверку здесь?

Спасибо.

Ответы [ 3 ]

1 голос
/ 06 апреля 2011

Попробуйте:

validates_length_of :description

для более подробной информации ... http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_length_of

0 голосов
/ 07 апреля 2011

Это оказалось проблемой синтаксиса. Это происходило на тестовом сервере, где были две модели с очень похожими именами (одна обновленная версия другой). Во время тестирования я использовал не тот. Приношу свои извинения за ненужные царапины на голове:)

0 голосов
/ 06 апреля 2011

когда вы отправляете пустую HTML-форму для действия создания, она должна идти в другом месте действия создания, и ваша форма должна иметь следующую строку:

<% = f.error_messages%>

чтобы показать вам ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...