根据表列中的值隐藏或显示视图的一部分

时间:2014-11-06 15:18:24

标签: ruby-on-rails if-statement ruby-on-rails-4

我觉得这很简单,但显然我找不到答案。

我有一个名为Events的模型和一个名为status的列。我想在我的视图中显示一个名为待处理的徽章,仅当event.status = pending的值时才显示。

我试过这个:

<% if event.status.pending? %>
  <span class="badge badge-warning">pending</span>
<% end %>

但是当我这样做时,错误说:

   undefined method `pending?' for "unscheduled":String

计划外计划是该列可能具有的其他值

1 个答案:

答案 0 :(得分:1)

这将有效:

<%  if event.status == 'pending' %>

另外检查其presence

<% if event.status.present? && event.status == 'pending' %>

最重要的是,您可以为Event模型添加一项功能,以使.pending?正常工作:

<强> events.rb

def self.pending?
  true if self.status == "pending"
end

然后您可以从视图

中调用它
<% if event.pending? %>