我正在尝试创建一个辅助方法,它附加东西并在其中显示块,如下所示:
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 ...%>的情况下调用,但是当我这样调用它时,附加的内容不会显示
我错过了什么?
也许在帮助器中使用content_tag
是一种更好的方法。
对于你的错误,可能是因为你在你的视图中做了整个ERB.new(...)
,应该在帮助器中。