2011-08-01 50 views
0

当我从MySQL数据库中检索用户信息时,我得到一些追加到列值的垃圾字符,并且某些列值不显示 - 但数据可用在数据库中。获取用户信息 - 在Rails 3中获取垃圾字符

这里是用于以检索用户信息代码:获得

user_controller.rb 
edit_user = User.find(params[:id]) 
@realname = edit_user.realname - value is displayed properly 
@username = edit_user.username - value is displayed properly 
@email = edit_user.email - value is displayed by junk characters - but value is not displayed in rails console and value can be seen in mysql database. 

即电子邮件值为0 /,job_desc是0/ 电话值1111/ 地址值作为办公室/

@phones = edit_user.phones 
    @phones.each do |phone| 
    if phone.phone_type == "Office" 
     @phone1 = phone.number 
    elsif phone.phone_type == "Mobile" 
     @phone2 = phone.number 
    elsif phone.phone_type == "Home" 
     @phone3 = phone.number 
    end 
    end 

user.rb - model: 
class User < ActiveRecord::Base 
    has_many :phones 
    has_many :addresses 
end 
phone.rb 
class Phone < ActiveRecord::Base 
    belongs_to :user 
end 
address.rb 
class Address < ActiveRecord::Base 
    belongs_to :user 
end 

任何人都可以引导我在哪里我犯错或建议我一个方法来正确获取用户信息没有垃圾字符?

感谢ü 苏德赫

+1

字符编码问题的结果,也许? –

+0

我没有编码任何东西 - 我们只是保存和回顾记录。 – sudhir

回答

0

我觉得一定有什么事情,你所提供的代码之外。

在Rails控制台,您可以执行下列操作...

u = User.new 
u.realname = "1" 
u.username = "2" 
u.email = "[email protected]" 
u.save 

x = u.id 

u = User.find(x) 
puts x.email 

,并张贴此

+0

结果如下: irb(main):006:0> u = User.new =>#<用户ID:无,用户名:无,实名:无,电子邮件:无,job_desc:无,created_at:无,updated_at:nil> irb(main):007:0> u.realname =“1” =>“1” irb(main):008:0> u.username =“2” =>“2 “ irb(main):009:0> u.email =”[email protected]“ =>”[email protected]“ irb(main):010:0> u.save => true irb(main):011:0> x = u.id => 49 irb(main):012:0> u = User.find(x) =>#<用户ID:49,用户名:“2 “,realname:”1“,email:#,job_desc:nil,created_at:2011,updated_a t:#> irb(main):013:0> – sudhir

+0

嗨,我想我看到这个问题,一个或多个你的mysql列的类型DECIMAL这就是为什么我认为你的代码输出结果是'BigDecimal:1fac5b0',0.0',4(8)'作为电子邮件的结果。仔细看看你的表结构,确保字符串是VARCHAR,日期是DATETIME。让我知道你是怎么办的。最糟糕的情况是,移除桌子并制作一个新桌子。 – creativetechnologist