我需要遍历一个数据库表,其中的条件将发生变化:
<%# if @story.category == 5 %>
<% @users.where(generalLabour: 1).find_each do |user| %>
<% else %>
<% @users.each do |user| %>
.... Iterate and display data.....
所以我需要做这样的事情,不幸的是这似乎不起作用,因为我无法将这样的语句与 else 语句一起运行
我还需要进行整数比较:
<% @users.where(starttime: > 12 ).find_each do |user| %>
我怎么做这样的事情?
也许我应该用Javascript而不是rails来做这一切?
试试这个
query= ""
if @story.category == 5
query = "generalLabour = 1"
elsif @story.category == 4
query = "generalLabour = 2"
elsif @story.category == 6
query = "generalLabour = 3"
end
@users.where(query).each do |user|
.........
end
query= ""
if @story.category == 5
query = "SaturdayS <= #{story.startTime}"
elsif @story.category == 4
query = "SaturdayE >= #{story.endTime}"
end
@users.where(query).each do |user|
.........
end
您可以将哈希与映射一起使用:
x = { 5 => 1, 4 => 2, 6 => 3 }[@story.category]
或者用例语句(这是 switch
的 ruby 版本(:
x = case(@story.category)
when 5
3
when 4
2
when 6
3
else
raise "Doh! I did not think of this."
end
但很可能你只是做错了。在应用程序中对 ID 进行硬编码不是一个好的解决方案,您应该通过设置适当的关联并通过它获取相关项来解决此问题。