Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 视图内部的Ruby行为与IRB不同_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 视图内部的Ruby行为与IRB不同

Ruby on rails 视图内部的Ruby行为与IRB不同,ruby-on-rails,ruby,Ruby On Rails,Ruby,下面是通过交互式Ruby解释器运行以下代码时发生的情况: start_date = '2015-03-22' month_and_year = Date.parse(start_date).strftime("%B %Y") puts month_and_year 输出: March 2015 我的一个视图中有相同的代码: <% require 'date' %> ........... <% logger.info

下面是通过交互式Ruby解释器运行以下代码时发生的情况:

start_date = '2015-03-22'
month_and_year = Date.parse(start_date).strftime("%B %Y")
puts month_and_year
输出:

March 2015  
我的一个视图中有相同的代码:

         <% require 'date' %>
         ...........
         <% logger.info(@event.start_date ) %>
         <% start_date = @event.start_date %>
Line 64: <% logger.info(__LINE__) %>
         <% month_and_year = Date.parse(start_date).strftime("%B %Y") %>
         <% logger.info(__LINE__) %>

为什么相同的代码片段会在视图中导致500错误

@event.start\u date
不是字符串,需要第一个参数是
string

在您的
irb
中,您将字符串
2015-03-22
提供给
Date.parse
,该操作成功。但是在您的
erb
中,它不是
字符串
,可能是
日期
类型

因此,在
erb
中的
strftime
上使用
@event.start\u date
,如下所示:

<% month_and_year = @event.start_date.strftime("%B %Y") %>

@event.start\u date
不是字符串,需要第一个参数是
字符串

在您的
irb
中,您将字符串
2015-03-22
提供给
Date.parse
,该操作成功。但是在您的
erb
中,它不是
字符串
,可能是
日期
类型

因此,在
erb
中的
strftime
上使用
@event.start\u date
,如下所示:

<% month_and_year = @event.start_date.strftime("%B %Y") %>

@event.start\u date
不是字符串,需要第一个参数是
字符串

在您的
irb
中,您将字符串
2015-03-22
提供给
Date.parse
,该操作成功。但是在您的
erb
中,它不是
字符串
,可能是
日期
类型

因此,在
erb
中的
strftime
上使用
@event.start\u date
,如下所示:

<% month_and_year = @event.start_date.strftime("%B %Y") %>

@event.start\u date
不是字符串,需要第一个参数是
字符串

在您的
irb
中,您将字符串
2015-03-22
提供给
Date.parse
,该操作成功。但是在您的
erb
中,它不是
字符串
,可能是
日期
类型

因此,在
erb
中的
strftime
上使用
@event.start\u date
,如下所示:

<% month_and_year = @event.start_date.strftime("%B %Y") %>


在rails视图中,您可以避免使用
strftime
并使用
I18n
帮助程序来呈现正确的格式,有关更多信息,请参见
I18n.localize(@event.start\u date,format::month\u year)
在rails视图中定义
month\u year
config/locales/*.yml
可以避免使用
strftime
并使用
I18n
帮助程序呈现正确的格式,有关更多信息,请参见
I18n.localize(@event.start\u date,format::month\u year)
在rails视图中定义
month\u year
config/locales/*.yml
可以避免使用
strftime
并使用
I18n
帮助程序呈现正确的格式,有关更多信息,请参见
I18n.localize(@event.start\u date,format::month\u year)
在rails视图中定义
month\u year
config/locales/*.yml
可以避免使用
strftime
并使用
I18n
帮助程序呈现正确的格式,有关更多信息,请参见
I18n.localize(@event.start\u date,format::month\u year)
config/locales/*.yml中定义
month\u year
是的,问题是类型不兼容。你的建议奏效了。是的,问题是不兼容的类型。你的建议奏效了。是的,问题是不兼容的类型。你的建议奏效了。是的,问题是不兼容的类型。你的建议奏效了。