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都没,这个配置文件时正确的么?。
这个后面解决吧。
[color=red]乱码问题,删除depot_development数据库,重新创建为utf8格式。ok[/color]

验证。创建好以后,出现验证问题。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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值