我一直得到错误无法将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 <%=>
但仍有错误
答案 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建议,因为它更干。