在Rails中的连接变量中传递IF语句

时间:2015-01-16 02:04:58

标签: ruby-on-rails ruby

目前我有这样的声明:

legend = "#{post.by}"+" | #{photo.legend}"+" | #{photo.credit}"

如果photo.legend为零,我希望输出看起来像这样:

By | Credit

3 个答案:

答案 0 :(得分:2)

你可以使用这样的东西来循环变量,并使用Array#compact方法将任何不是nil的变量连接在一起。

legend = [post.by, post.legend, photo.credit].compact.join(" | ")

一个例子:

[22] pry(main)> by = 'me'
=> "me"
[23] pry(main)> credit = 'some guy'
=> "some guy"
[24] pry(main)> legend = nil
=> nil
[25] pry(main)> [by, credit, legend].compact.join(" | ")
=> "me | some guy"

答案 1 :(得分:0)

您也可以尝试:

legend.split("|")[1].blank?

除非我错过了你想要做的事情。

答案 2 :(得分:0)

修改

拒绝并空白?

legend = [post.by, photo.legend, photo.credit].reject(&:blank?).join(' | ')

将输出"传奇"有 By |信用如果图例为空或零


by = post.by
legend_ph =  photo.legend
credit = photo.credit

legend = [by, credit, legend_ph].compact.join(" | ")

Compact只能工作如果是Nil

是答案,谢谢Anthony