Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 修复slimif-else语句中的冗余_Html_Ruby On Rails_Ruby_Ruby On Rails 3_Slim Lang - Fatal编程技术网

Html 修复slimif-else语句中的冗余

Html 修复slimif-else语句中的冗余,html,ruby-on-rails,ruby,ruby-on-rails-3,slim-lang,Html,Ruby On Rails,Ruby,Ruby On Rails 3,Slim Lang,我的slim文件中有以下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 这不利于干燥。无论如何,我可

我的slim文件中有以下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

这不利于干燥。无论如何,我可以减少这个代码,这样我就不必看到两次子标记了吗?到目前为止,我所做的任何尝试都导致我将子标记存在于一个div中,而不是另一个div中,这不是我想要的,我希望子标记无论如何都存在。

在视图中复制代码时,应该使用分部来保存复制的代码,并在希望其出现的任何位置呈现分部。我知道您的简化代码只是为了显示您的意图,但如果它更真实,我可以提供进一步的建议

您还可以内联该逻辑:

div
  = x == 0 ? 'Some Cool Title' : 'Some Other Title'
  div Ditto
不过,比这更好的是将该逻辑移动到更合适的位置,例如使用类似宝石的Draper来创建presenter对象

div
  = @my_presenter_object.title
  div ditto

在视图中复制代码时,应使用分部来保存复制的代码,并在希望其出现的任何位置呈现分部。我知道您的简化代码只是为了显示您的意图,但如果它更真实,我可以提供进一步的建议

您还可以内联该逻辑:

div
  = x == 0 ? 'Some Cool Title' : 'Some Other Title'
  div Ditto
不过,比这更好的是将该逻辑移动到更合适的位置,例如使用类似宝石的Draper来创建presenter对象

div
  = @my_presenter_object.title
  div ditto

三级解决方案:

  • 模板中的if/else与原始代码类似。用例:短代码

  • 使用助手。我喜欢这个。用例:较长但不太长的代码,带有明显的模式

    = my_helper(x)
    
    然后在helper中,可以插值
    x
    。非常强大

  • 使用if/else和partial。正如亚历克斯已经提到的。用例:if或else之后的长代码


  • 三级解决方案:

  • 模板中的if/else与原始代码类似。用例:短代码

  • 使用助手。我喜欢这个。用例:较长但不太长的代码,带有明显的模式

    = my_helper(x)
    
    然后在helper中,可以插值
    x
    。非常强大

  • 使用if/else和partial。正如亚历克斯已经提到的。用例:if或else之后的长代码


  • 你能用一些真实世界的例子吗?“div x等于0”这件事很难理解。对不起,希望我更新的问题更有意义。你能用一些真实世界的例子吗?“div x等于0”这句话很难理解。对不起,希望我更新的问题更有意义。我投票赞成你第一句话的答案b/c:“当在视图中复制代码时,你应该使用一个片段来保存复制的代码,并在你希望它出现的任何地方呈现该片段。”谢谢!我投票赞成你第一句话的答案b/c:“当在视图中复制代码时,你应该使用一个片段来保存复制的代码,并在你希望它出现的地方呈现该片段。”谢谢!