【问题标题】:I keep getting a can't convert nil to String but can't debugy in Rails 3我不断收到无法将 nil 转换为 String 但无法在 Rails 3 中调试的问题
【发布时间】:2011-10-08 02:46:15
【问题描述】:

我该如何编写代码,以便异常输出哪个方法和具体的联系实例是问题所在?

 sub_message =
 13       message.gsub("{FirstName}", contact.first_name).
 14            gsub("{LastName}", contact.last_name).
 15            gsub("{Title}", contact.title || "blank").
 16            gsub("{Signature}", contact.user.signature.to_s).
 17        #    gsub("{Company}", contact.company_name.clear_company).
 18            gsub("{Colleagues}", colleagues.to_sentence).
 19            gsub("{NextWeek}", next_week.strftime("%A, %B %d")).
 20            gsub("{FollowingWeek}", (Date.today + 14.days).strftime("%A, %B %d")).
 21            gsub("{UserFirstName}", contact.user.first_name).
 22            gsub("{UserLastName}", contact.user.last_name).
 23            gsub("{City}", contact.address.city.titleize || "default city").
 24            gsub("{State}", contact.address.state || "default state").
 25            gsub("{Zip}", contact.address.zip || "default zip" ).
 26            gsub("{Phone}", contact.phone.format_phone || "default phone" ).
 27            gsub("{Street1}", contact.address.street1.titleize || "default street").
 28            gsub("{Today}", (Date.today).strftime("%A, %B %d")).
 29            gsub("{CustomField1}", contact.custom_field_1.to_s || "custom").
 30            gsub("{PageBreak}", "p{page-break-after: always}. ")

【问题讨论】:

  • 请发布完整的错误。光看这个,我能告诉你的就是它可能是第 16 行或第 29 行,这两行使用了to_s 方法。使用Contact.all.select{|c| c.user.signature == nil} 或类似的东西签入控制台。
  • 我宁愿说它可能不是第 16 行或第 29 行,因为 nil.to_s #=> ""。真的可以是任何一条线。看起来你可以通过使用液体标签或类似的东西来整理代码,而不是手动进行所有这些字符串替换。
  • 我应该摆脱 .to_s 吗?我以为 to_s 会对“”取零值?我怎么能把它整理一下……我认为链接 gsub 是最好的方法……

标签: ruby-on-rails-3 null gsub


【解决方案1】:

我会简单地尝试每行一个 message.gsub!()(注意“!”),每个属性一个。

message.gsub!("{FirstName}", contact.first_name)
message.gsub!("{LastName}", contact.last_name)

这将在每次发生更改时保存消息变量,否则,它只会移动到 gsub! 的下一个实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多