Rails validates_presence_of不使用HTML表单文本区域

时间:2011-04-06 02:32:21

标签: html ruby-on-rails validation forms model

环境:Rails 2.3.11 w / 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 个答案:

答案 0 :(得分:1)

试试这个:

validates_length_of :description

了解更多详情...... http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_length_of

答案 1 :(得分:0)

当您向创建操作提交空白HTML表单时,它应该进入创建操作,而您的表单应该包含以下行:

&lt;%= f.error_messages%&gt;

向您显示错误。

答案 2 :(得分:0)

这结果是一个语法问题。它发生在测试服务器上,其中有两个名称非常相似的模型(一个是另一个的更新版本)。在测试期间我使用了错误的一个。我为任何不必要的头疼而道歉:)