如何在Rails中的if语句之后继续映射函数?

时间:2016-12-06 18:08:24

标签: ruby-on-rails arrays

这是我的代码:

jobs.map do |record|
  [
    record.id,
    record.jobtitle,
    record.date,
    if (record.expired) then
      "expired"
    else
      "available"
    end
    ,
    record.views_count
  ]

但显示错误:syntax error, unexpected ',', expecting ']' 我能怎么做?感谢任何帮助,因为我是初学者。

3 个答案:

答案 0 :(得分:1)

您可以改为使用三元语句:

jobs.map do |record|
  [
    record.id,
    record.jobtitle,
    record.date,
    (record.expired ? "expired" : "available"),
    record.views_count
  ]

How do I use the conditional operator (? :) in Ruby?

答案 1 :(得分:1)

删除' then'在你的if / else语句中。使用'然后'对于单行if语句更清晰。另外,将if / else语句移到数组外部。所以:

jobs.map do |record|
    if (record.expired)
      x = "expired"
    else
      x = "available"
    end
  [
    record.id,
    record.jobtitle,
    record.date,
    x,
    record.views_count
  ]

如果你喜欢单行,你可以使用三元运算符?作为if / else,例如:record.expired ? x='expired' : x='available'

答案 2 :(得分:1)

我从Godwin的回答中注意到了这一点,你只需要括号。

jobs.map do |record|
  [
    record.id,
    record.jobtitle,
    record.date,
    (if (record.expired) then
      "expired"
    else
      "available"
    end)
    ,
    record.views_count
  ]

为我工作,希望有所帮助。