我有以下代码似乎工作正常:
<%if group.employees.count > 0%>
<td><%= link_to group.employees.count.to_s, {:action => 'index', :controller => 'employees'}, {:id=>group.id}%></td>
<%else%>
<td><%= link_to "Add Employee", {:action => 'new', :controller => 'employees'}%></td>
<%end%>
我只是想知道如何以更友好的方式使用除非?
答案 0 :(得分:5)
我愿意(根据dylanfm在下面的评论中的建议)这样写:
<% if group.employees.present? %>
<td><%= link_to group.employees.count.to_s, employees_path, { :id=> "group_#{group.id}" }%></td>
<% else %>
<td><%= link_to "Add Employee", new_employee_path %></td>
<% end %>
这里我使用了employees_path
和new_employee_path
方法,这些方法是使用 config / routes.rb 中的路由助手生成的。您可以阅读the Routing from the Outside In guide了解有关路由的更多信息。
答案 1 :(得分:2)
我认为除非使用else,否则使用它是不可读的。坚持你拥有的东西会更好。
答案 2 :(得分:1)
您有一个if-else分支(两种可能的不同结果),因此使用unless
会要求您将其更改为除非分支,这很难理解。如果 - 其他是在这种情况下的方式。
如果您只有一个条件,即
if foo != 0
do_something(bar)
end
可以改写为
do_something(bar) unless foo == 0
答案 3 :(得分:1)
您可以尝试这种方式:
<% if group.employees.any? %>
<td><%= link_to group.employees.count, employees_path, { :id=> dom_id(group) } %></td>
<% else %>
<td><%= link_to "Add Employee", new_employee_path %></td>
<% end %>
答案 4 :(得分:1)
您可以使用helper和content_tag生成html而不是丑陋的erb语法。
def foo if group.employees.count > 0 content_tag(...) else content_tag(...) end end
然后在你看来
<%= foo %>
答案 5 :(得分:0)
Tumtu的方式是最好的,但我甚至会将td标签放在if语句之外。除非与其他人一起使用,否则我永远不会使用,当然不是“轨道方式”,除非。