所以我认为这是
<% @events.each do |event| %>
<% if event.eventcomplete %>
<% else %>
<tr>
<td colspan="7">
<p>
No Events could be found.
</p>
</td>
</tr>
<% end %>
这是在我的搜索结果页面上,
然而,如果没有eventcomplete,我想要的只是显示一个没有找到事件,
目前我发现了大约100个事件,但是,这些事件都没有完成。所以我得到了大约100&#34;没有发现任何事件&#34;
感谢您的帮助
萨姆
答案 0 :(得分:2)
我不知道你的代码是什么样的,但是我觉得你在视图中用eventcomplete
过滤来确定要显示哪些行以及是否显示“没有结果“消息。大概你以后想要使用这个集合做其他事情(比如分页),所以我建议在控制器中过滤集合:
# controller code
@in_progress_events = @events.where(eventcomplete: false)
在收集视频到达视图之前对其进行了正确过滤后,请查看此答案中的要点以获取有关显示的提示:Rails: An elegant way to display a message when there are no elements in database
答案 1 :(得分:1)
您的代码缺少<% end %>
代码。
<% @events.each do |event| %>
<% if event.eventcomplete %>
[insert view code to show if event.eventcomplete is true]
<% else %>
<tr>
<td colspan="7">
<p>
No Events could be found.
</p>
</td>
</tr>
<% end %>
<% end %>
答案 2 :(得分:0)
实际上代码正在做它应该做的事情,
你的html Block在你的每一个块中被定义,这就是为什么它被提升了100次。
我刚用Helper Variables修复它,但它只是一个解决方法
您应该在模型中使用更多静态方法,只需定义它
请确保您的商业逻辑在您的模型中占有一席之地:
胖模型,瘦控制器/视图
这应该有效
<% @there_is_no_eventcomplete = false %>
<% @events.each do |event| %>
<% if event.eventcomplete %>
@there_is_no_eventcomplete = true
<% end %>
<% end %>
<% if @there_is_no_eventcomplete == false %>
<tr>
<td colspan="7">
<p>
No Events could be found.
</p>
</td>
</tr>
<% end %>
答案 3 :(得分:0)
您希望在模型上使用范围,然后可以在控制器中调用该范围。我不确定您是如何设置模型或如何确定事件是否已完成,因此我们假设您在模型上完成了布尔属性:
event.rb
class Event
def self.completed
where(complete: false)
end
end
控制器
@events = Event.completed
视图
<% unless @events.nil?
<% @events.each do |event|%>
// your code
<% end %>
<% else %>
// your code
<% end %>