【问题标题】:Can I concatenate the result of two helper methods in single erb output我可以在单个 erb 输出中连接两个辅助方法的结果吗
【发布时间】:2023-04-08 21:50:01
【问题描述】:

我创建了一个助手来使用 erb 输出一些文本

<%= helper_method %>

但是如果我尝试把它放 2 次它不会工作..例如..

<% =  
helper_method  
helper_method  
%>

我期待文本两次...但我只收到一次...

【问题讨论】:

  • 因为包含最后一个返回值。
  • 谢谢大家的回答.. erb 中的意图更多的是连续编码.. 说你调用方法输出一些之后我不想开始另一个
  • &lt;%= [meth1, meth2, meth3].join %&gt; 如果你必须这样做,但你似乎正在努力寻找它从未打算做的事情。

标签: ruby sinatra erb


【解决方案1】:

每个&lt;%= %&gt; 输出一个字符串,因此要么将它们连接成一个字符串,要么执行两次。

<%= helper_method %> (or <%= ... -%> )
<%= helper_method %>

有多种连接方式; %Q、普通字符串插值等

【讨论】:

    【解决方案2】:

    尝试类似的东西

    <%= %Q(#{helper_method} #{helper_method}) %>
    

    【讨论】:

      【解决方案3】:
      <%= helper_method + helper_method %>
      

      【讨论】:

        【解决方案4】:

        如果你需要多次打印一个字符串(你的例子中的字符串来自一个助手),你可以简单地使用乘数运算符

        #helper
        def helper_method
          "Text"
        end
        
        #view
        <%= helper_method * 2 %>
        

        新字符串中的结果如下:TextText

        HTH

        【讨论】:

          【解决方案5】:

          当你说&lt;%= helper_method %&gt;时,=表示打印输出,但是当你说时

          <% =  
          helper_method1  
          helper_method2 
          %>
          

          Rails 不知道应该打印哪个输出,因为它有两种方法:

          • helper_method1
          • helper_method2

          【讨论】:

          • 并不是它“不知道”要打印哪个。只是 Erb 中的 &lt;%= ... %&gt; 仅在块中的最后一个表达式上调用 to_s。 (如标记,这是 Sinatra,而不是 Rails。)
          • @Phrogz 好吧,现在已经改成 Rails 了 :)
          • @RocketR 嗯。这似乎是一个糟糕的编辑。我已经恢复它:)
          猜你喜欢
          • 1970-01-01
          • 2012-08-25
          • 2017-01-20
          • 2017-01-01
          • 1970-01-01
          • 2017-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多