`
black_star
  • 浏览: 33162 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ruby on rails(3)-- 乱码及验证

阅读更多
  建好表后,碰到乱码问题。搜了下,发现把数据库和配置编码设为utf8即可。查看yml,encoding 已经utf8了。好,把depot_development设置为utf8。首先查看编码,用phpmyadmin进入。然后命令 show variables like 'character%' 出来的latin1,好用alter database development charset set utf8;(utf-8不行)然后再查看 发现已经为utf-8,然后重启mysql。可是一查,还是回去了,郁闷,乱码问题还是没有解决。
   有些解决方法是向app controller加入一段代码,可是我一加就报错。
   郁闷啊, 。还有一点奇怪的是同样是进入depot_development show上语句出来的结果phpmyadmin和instansrails的console代码查不一致,不知道相信哪个。instansrails下面mysql配置的my.ini也忒简单了吧。defalut_character_set都没,这个配置文件时正确的么?。
这个后面解决吧。
   乱码问题,删除depot_development数据库,重新创建为utf8格式。ok
 
   验证。创建好以后,出现验证问题。image_url格式随便,什么zip,exe,都是。还有price 价格也不对。那么,验证在哪里好呢?model层,程序与数据库的桥梁,最后在这里验证最好了。修改app/models下面的product.rb修改如下:
   
    class Product < ActiveRecord::Base
	validate :price_must_be_at_least_a_cent
	validates_numericality_of :price  

	validates_presence_of :title, :image_url
	validates_uniqueness_of :title
	validates_format_of :image_url,
		:with  => %r{\.(gif|png|jpg)$}i,
                  :message => 'Must be a gif|png|jpg'
	protected
	def price_must_be_at_least_a_cent
	errors.add(:price,'should be at least 0.01') if price.nil? ||
	price < 0.01
	end
   end
   

   在rails的validate函数 加入 price_must_be_at_least_a_cent函数,这样可以再运行验证的时候同时调用price_must_be_a_cent
   关于validates函数的具体用法,可以参照下面的帖子
   http://cpccai.iteye.com/blog/92098
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics