所以我开始尝试做的是在我的html代码中执行if语句,其中@events在我的控制器中定义:
<% @events.each do |event| %>
<% if event.starts_at.hour() == 9 %>
<p> <%= event.name %>
<% end %>
<% end %>
但显然现在尝试加载后,程序不喜欢这个。 (我对ruby很新,所以我至少要尝试这些东西!)
尝试此操作时给出的错误是:
C:/Users/Sarah/RubymineProjects/MyApp/app/views/calendars/_show.html.erb:49:语法错误,意外')',期待keyword_then或';'还是'\ n'......? &安培;&安培; event.starts_at.hour == 9); @ output_buffer.safe_append ='... ^ C:/Users/Sarah/RubymineProjects/MyApp/app/views/calendars/_show.html.erb:52:语法错误,意外的keyword_end ,期待')''。freeze;结束^ C:/Users/Sarah/RubymineProjects/MyApp/app/views/calendars/_show.html.erb:54:语法错误,意外的keyword_end,期待')''。freeze;结束^ C:/Users/Sarah/RubymineProjects/MyApp/app/views/calendars/_show.html.erb:364:语法错误,意外的keyword_ensure,期待')'C:/ Users / Sarah / RubymineProjects / MyApp / app / views / calendars / _show.html.erb:366:语法错误,意外的keyword_end,期待')'
为什么会这样?是因为我的_show.html.erb在我的main.html.erb中被部分使用了吗? 我该怎么做呢?
以下是我使用Pages控制器进行的尝试。 html文件名为_show.html.erb,它属于另一个控制器,但它被渲染到属于Pages控制器的main.html.erb文件中。
class PagesController < ApplicationController
#before_action :require_customer, only: [:main]
def home
end
def main
@events = current_customer.calendar.events
def mon900(event)
if(event.day()==1 && event.hour()==9)
@mon900 = event
end
end
end
end
我在html中调用了这个方法:
<% if @mon900 %>
<p>do something</p>
<% end %>
我是否在正确的轨道上?我只学了一个星期的Ruby,所以显然不熟悉框架和语法。 谢谢!
答案 0 :(得分:1)
我只想将其重写为:
<% @events.each do |event| %>
<% if event.starts_at.monday? && event.starts_at.hour == 9 %>
<p><%= event.name %></p>
<% end %>
<% end %>
那就是说,我不认为这是最漂亮的代码吗?如果在星期一上午9点开始的事件对你很重要,你想为它创建一个范围,所以你可以这样称它为:@events.monday_at_9.each do |event|
而没有循环内的if条件(更多关于{{3}中的范围})