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