Ruby On Rails错误无法将Nil转换为字符串

时间:2011-05-07 21:47:29

标签: ruby-on-rails ruby

我一直得到错误无法将nil转换为字符串以下是我的鳕鱼为控制器和视图和新的任何想法或建议有什么可以帮助解决它?

class ShowDateTimeController < ApplicationController
  def display
    @title = "Some Project For Date and Time"
    @current_time = Time.now.asctime
    @current_time2 = Time.now
    t = Time.now
    @h= t.hour
    @m= t.min
    @s= t.sec
    @v= Time.now.strftime ("%B")

    t.hour.to_s

    if t.hour > 6 && t.hour < 18
      @img = "sun.jpg"
      @name = "Good Morning The Sun Is Up"
    else
      @img = "moon.jpg"
      @name = "Good Night The Moon Is Up"


      if Time.now.month == 1
        @img_month= "jan.jpg"
      elsif Time.now.month ==2
        @img_month = "feb.jpg"
      elsif Time.now.month ==3
        @img_month = "mar.jpg"
      elsif Time.now.month ==4
        @img_month = "apr.jpg"
      elsif Time.now.month ==5
        @img_month = "may.jpg"
      elsif Time.now.month ==6
        @img_month = "jun.jpg"
      elsif Time.now.month ==7
        @img_month = "jul.jpg"
      elsif Time.now.month ==8
        @img_month = "aug.jpg"
      elsif Time.now.month ==9
        @img_month = "feb.jpg"
      elsif Time.now.month ==10
        @img_month = "oct.jpg"
      elsif Time.now.month ==11
        @img_month = "nov.jpg"
      else
        @img_month = "dec.jpg"

当我尝试从可变@img_month

获取图像时在本地主机中查看时出错

image_tag @img_month, :class => 'img'&lt; ----错误在这里是的我确实使用了rails delimeter <%=>但仍有错误

3 个答案:

答案 0 :(得分:2)

end之后可能缺少if

    if t.hour > 6 && t.hour < 18
          @img = "sun.jpg"
          @name = "Good Morning The Sun Is Up"
    else
          @img = "moon.jpg"
          @name = "Good Night The Moon Is Up"
    end # <---- this one

因此,白天没有设置@img_month

答案 1 :(得分:0)

在代码中,如果@img_month为真,则不会设置t.hour > 6 && t.hour < 18变量 - 那么它将为nil

答案 2 :(得分:0)

我猜它总是经历t.hour > 6 && t.hour < 18真实条件,因为如果它是真的,你没有设置@img_month变量(因为变量只在else部分设置)。

将@img_month放在代码顶部,在条件之前,使用默认值可以解决您的问题。

注意:如果能够向助手提供这些表示逻辑,那就更好了。只需传递一个值并编写帮助程序即可生成图像。并尝试@bassneck建议,因为它更干。