【发布时间】:2019-03-14 23:38:49
【问题描述】:
我正在尝试创建一个辅助方法来附加内容并显示其中的块,如下所示:
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
所以我需要在没有“=”的情况下调用,,但是当我这样调用时,附加的内容不显示
我错过了什么?
【问题讨论】:
-
AFAIK Rails 使用 Erubis,而不是 ERB。它们不太支持相同的语法。
-
从 erubis gem 中尝试了 Erubis::Eruby.new() 但得到了同样的错误,这是你的意思吗?
标签: ruby-on-rails ruby view rendering