如何在“price”存在时编写链接标记

时间:2015-12-29 23:16:05

标签: ruby-on-rails

我在ProductDecorator中有这样的代码。

 link = if price.present?
           h.link_to self do
             h.number_to_currency(price, precision: 0)
           end
        end
 link ||= '-'

如果没有链接,我可以写:

price.present? ? h.number_to_currency(price, precision: 0) : '-'

带有链接标记的代码似乎有点多余。有没有更好的方法来编写带链接标记的代码?

1 个答案:

答案 0 :(得分:0)

如何使用link_to_if

我认为它会像:

link = h.link_to_if(price.present?, h.number_to_currency(price, precision: 0), self) do 
  "-"
end

如果你的装饰师有价格助手方法,你可以进一步清理它。

def display_price
  h.number_to_currency(price, precision: 0)
end

def link_to_price # or whatever you've called that method
   link_to_if(price.present?, display_price, self) do
     "-"
   end
end

查看ActionView::Helpers::UrlHelpers docs了解详情。