Rails View 里嵌入 ruby 代码问题

jiffies · 2012年04月29日 · 最后由 jiffies 回复于 2012年04月29日 · 2785 次阅读
<span class=
<%= current_user.notifications.size>0? "badge badge-important":"badge" %>>

期望大于 0 的时候 class="badge badge-important", 但结果却是

<span class="badge" badge-important="">

请问为什么?

<%= %>左右加引号 建议把该逻辑放到 helper 中,定义 badge_span_class,这样可读性更好

<%= current_user.notifications.size>0? "badge badge-important":"badge" %> 输出的是 ruby 的字符串。 你的 html 就变成了 <span class=badge badge-important> 因为你没加引号,浏览器自然就认为 badge-important 是另一个属性。

#2 楼 @yakjuly 怪不得我用 content_tag 就好了,谢谢

#1 楼 @geekontheway 其实还是疑惑,所谓 view 中的逻辑代码放到 helper 中,可以简洁,但是能不能加快运行速度呢?如果都是一个 erb 引擎处理,感觉还是一样的啊

#5 楼 @jiffies 1 楼没说可以加快运行速度吧? 用 helper 和效率没什么关系,就是为了良好的可读性 另外,如果有较大的一段代码要用 helper 输出,这时应选择 partial,而不是用 ruby 代码输出 html

#6 楼 @willmouse 恩,主要是好像经常在其他地方看到说大段逻辑代码在 view 里效率很低,要用 helper,被误导了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号