我的苗条文件中有以下if else语句
- if x == 0
div Some cool title here
- else
div A different cool title goes here
哪个好,但是我想在div中有一些子标签
- if x == 0
div Some cool title here
div Ditto
- else
div A different cool title goes here
div Ditto
这是对DRY的反对。无论如何我可以减少这个代码,所以我不必看两次子标签?到目前为止我所做的任何尝试都让我将子标记存在于一个div而不是另一个div中,这不是我想要的,我希望子标记无论如何都存在。
答案 0 :(得分:3)
在视图中复制代码时,您应该使用partial来保存重复的代码并将部分呈现在您希望它出现的位置。我知道你的简化代码只是为了展示你的意图,但如果它更真实,我可以提供更多的建议。
您还可以内联该逻辑:
div
= x == 0 ? 'Some Cool Title' : 'Some Other Title'
div Ditto
比这更好但是将这个逻辑移到更适合的地方,比如使用像Draper这样的宝石来创建一个演示者对象。
div
= @my_presenter_object.title
div ditto
答案 1 :(得分:1)
三级解决方案:
if / else在模板中就像原始代码一样。使用案例:短代码
使用帮助器。我喜欢这个。用例:具有明显模式的更长但不太长的代码。
= my_helper(x)
然后在帮助器中,您可以插入x
。非常强大。
使用if / else和partial。正如Alex已经提到的那样使用案例:if之后的长代码。