2007-07-22
表单验证错误信息一些使用技巧(适用于快速开发)
关键字: ruby ror railsRails提供了表单验证错误信息的输出,但是本身没有支持中文化,而且在html如想按照指定方式显示需要修改scaffold.css。开发中如果需要快速看到效果的朋友,下面有些简单的技巧供你参考。
需要完美中文化Validator的,请在Javaeye中自行搜索。
首先查看下面的代码片段:
ruby 代码
- class Diary < ActiveRecord::Base
- belongs_to :diary_category
- belongs_to :blog
- has_many :replies, :as => :replyable, :dependent => true
- validates_presence_of :title,
- :message => "文章主题不能为空!"
- validates_presence_of :content,
- :message => "文章内容不能为空!"
- validates_length_of :title, :in => 5..50,
- :too_long => "文章主题必须在5到50字符之间!",
- :too_short => "文章主题必须在5到50字符之间!"
- validates_length_of :content, :minimum => 15,
- :message => "文章内容必须大于15个字符!"
- end
片段中对验证信息进行了一些简单的中文化处理。当Diary的一个对象比如diary保存失败时,我们就可以从diary.errors中来取得错误信息集合。比如下面的controller代码:
ruby 代码
- def new_diary
- if request.get?
- @categories = @user.blog.diary_categories.collect { |category| [category.name, category.id]}
- @categories[@categories.size] = [" ", "0"]
- @categories.reverse!
- else
- @diary = Diary.new(params[:diary])
- @diary.created_time = Time.now
- @diary.blog = @user.blog
- @diary.viewer_count = 0
- if @diary.save
- flash[:message] = ["新增文章成功!"]
- redirect_to :action => :show_diaries
- else
- flash[:error] = []
- @diary.errors.each { |property, error| flash[:error] << error }
- redirect_to :action => :new_diary
- end
- end
- end
代码将diary保存失败的错误信息处理后转入flash[:error]中,这样在View中就可以通过遍历flash[:error]来使用。这里为了以后适用方便,在application_helper.rb中加入了一个帮助方法。
ruby 代码
- def message(messages)
- if messages != nil and messages.size > 0
- bulk = ""
- messages.each { |message| bulk << %{class="alarm">#{message}} }
- bulk << ""
- else
- ""
- end
- end
这样就能在View中通过 和 显示错误信息。如果需要定义样式,只需要修改message方法即可。
以上技巧只能解决一时只需,后期还是需要对整个Rails做中文化处理的。不过按照上述方法,可以快速在开发中看到效果,便于调整以后使用。
- 02:49
- 浏览 (1399)
- 评论 (3)
- 分类: Ruby On Rails
- 进入论坛
- 相关推荐
评论
chaoqun2003
2008-06-21
请问你提到的中文化validator的资料哪里能找到?我一直搜索不到阿..
cjyzpcl
2007-07-22
yehs220 写道
不是有error_messages_for,error_message_on吗?
我知道,只是上述是和scaffold中的css绑定的。如果我只需要他的error messages而不需要样式我觉得上面的较为简单些。当然也可以修改error_messages_for方法来修改样式。
yehs220
2007-07-22
不是有error_messages_for,error_message_on吗?
- 浏览: 18989 次
- 性别:

- 来自: 成都

- 详细资料
搜索本博客
最新评论
-
Rails实现随机验证码
执行到这一句granite = Magick::ImageList.new('x ...
-- by wzp2000 -
表单验证错误信息一些使用 ...
请问你提到的中文化validator的资料哪里能找到?我一直搜索不到阿..
-- by chaoqun2003 -
Rails实现随机验证码
Thanks a lot
-- by llleelay -
Rails实现随机验证码
我就想拿验证码来防止这个灌水,没想到JAVAEYE的blog也没有这个功能。
-- by sstt -
Rails实现随机验证码
ggggggggggggggggg
-- by sstt






评论排行榜