目前我有这样的声明:
legend = "#{post.by}"+" | #{photo.legend}"+" | #{photo.credit}"
如果photo.legend
为零,我希望输出看起来像这样:
By | Credit
答案 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