例如我有这个文件:
_goal.html.erb
<table>
<tr>
<%= goal.name %>
<span class="label label-info"><%= goal.deadline.strftime("%d %b %Y") %></span>
</tr>
</table>
它是从主页页面呈现的:
<h1><b>Goals</b></h1>
<%= render @unaccomplished_goals %>
<%= render @accomplished_goals %>
<% end %>
我们如何使用<span class="label label-info-success">
包装完成的目标,但如果这是一个未完成的目标,请保留<span class="label label-info">
?
在控制器:
中@accomplished_goals = current_user.goals.accomplished
@unaccomplished_goals = current_user.goals.unaccomplished
以下是我的最新尝试,它只是将它们全部-info
:
<% if @unaccomplished_goals == true %>
<span class="label label-info"><%= goal.deadline.strftime("%d %b %Y") %></span>
<% else @accomplished_goals == true %>
<span class="label label-warning"><%= goal.deadline.strftime("%d %b %Y") %></span>
<% end %>
也许你会有更多的运气:)
非常感谢你。
答案 0 :(得分:2)
创建一个帮助方法,返回目标状态的正确类。在application_helper.rb中:
def deadline_label_class(goal)
if goal.accomplished?
'label label-info'
else
'label label-warning'
end
end
这假定Goal
有一个名为accomplished?
的实例方法,它返回true / false。如果该方法不存在或使用其他一些标准,则可能必须编写该方法。
然后使用 _goal.html.erb 模板中的帮助器:
<table>
<tr>
<%= goal.name %>
<span class="<%= deadline_label_class(goal) %>">
<%= goal.deadline.strftime("%d %b %Y") %>
</span>
</tr>
</table>