Mar*_*ino 0 ruby-on-rails helper partial
具有多个返回的方法
def savings_for(id)
payments = Payment.user_of(id).all
savings = 0
num = 0
payments.each do |payment|
item = Item.find(payment.id)
num = num+1
savings += item.price
end
return savings, num
end
Run Code Online (Sandbox Code Playgroud)
我在视图中使用这个帮助器.像这样
<p>You´ve save <b><%=savings_for(current_user)%>$</b></p>
Run Code Online (Sandbox Code Playgroud)
但我不知道如何正确渲染:
You´ve save [#<BigDecimal:108289ca0,'0.13E3',9(27)>, 3]$
Run Code Online (Sandbox Code Playgroud)
更新:更改了返回方法:
return "<b>#{savings}€</b> en #{num}"
Run Code Online (Sandbox Code Playgroud)
我如何渲染html粗体标签?
因此,应该返回页面上呈现内容的辅助方法应该返回一个字符串,而不是多个值的数组.
你如何你应该决定自己想多要显示的值.你想如何展示它们?也许只是用逗号分隔?好的,所以在helper方法中将其格式化为自己:
...
return "#{savings}, #{num}"
end
Run Code Online (Sandbox Code Playgroud)
更新了更新的答案
更新:更改了返回方法:
Run Code Online (Sandbox Code Playgroud)return "<b>#{savings}€</b> en #{num}"我如何渲染html粗体标签?
我这样做:
def render_savings_for(savings, num)
safe_join(
content_tag("b", "#{savings}€"),
" en ",
num
)
end
Run Code Online (Sandbox Code Playgroud)
编写自己的html渲染助手可能看起来有点令人困惑,但实际上只有一些关于html安全性的简单概念需要理解.我以前试过在这里解释一些:https://bibwild.wordpress.com/2013/12/19/you-never-want-to-call-html_safe-in-a-rails-template/
另一种选择是使用视图部分而不是辅助方法,这不需要你注意html_safety技巧,它会为你处理它,但对于这个简单的东西,我认为帮助方法更简单.
接下来,你将开始询问i18n ......提出一个新问题!:)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |