Rails - 在没有的情况下将内容附加到辅助方法的块

问题描述 投票:1回答:1

我正在尝试创建一个辅助方法,它附加东西并在其中显示块,如下所示:

def test &block 
   %{<div> 
      <div> Example content </div>
       <p> #{capture(&block)} </div>
     </div>}.html_safe()
end

当我这样称呼它

<%= test do %>
 **stuff
<% end %>

它工作正常,但是当我还需要使用ERB.new()从控制器调用它时,当我这样做时,我收到一个错误:

电话:

@result = ERB.new(
%{<%= view_context.test do  %>
    <div>content to show inside</div>
  <% end %>}
).result(binding)

错误:

SyntaxError ((erb):2: syntax error, unexpected ')'
ncat(( view_context.test do  ).to_s); _erbout.concat "\n

所以我需要在没有“=”,<%test do ...%>的情况下调用,但是当我这样调用它时,附加的内容不会显示

我错过了什么?

ruby-on-rails ruby view rendering
1个回答
0
投票

也许在帮助器中使用content_tag是一种更好的方法。

对于你的错误,可能是因为你在你的视图中做了整个ERB.new(...),应该在帮助器中。

© www.soinside.com 2019 - 2024. All rights reserved.