我想从控制器内的ERB对象呈现HTML(ERB对象存储在数据库中),但没有成功。如何从控制器中的ERB对象呈现html?
我愿做这样的事情:
首先,我创建了一个Func
实例:
Func.Create(text: "<% @users.each do |user| %>
<td><%= user.id %></td>
<td><%= link_to user.username, user_path(user) %></td>")
然后,在controlller:
class MainController < ApplicationController
def foo
@users = User.all
render :html => bar(binding)
end
def bar(controller_binding)
html = Func.find(1)
template = ERB.new(html.text)
template.result(controller_binding)
end
end
但我得到的是错误,如下所示:
"Missing template main/resource_name, application/resource_name with
{:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby,
:jbuilder, :coffee]}. Searched in: * "c:/Users/david/sample/app/views""
和
"(erb):3: syntax error, unexpected $end, expecting keyword_end ...
ut.force_encoding(__ENCODING__) ... ^"
你完全正确,我改变了它,现在我得到这个错误:“未定义的方法'每个'为零:NilClass”..如何将@users变量转发到bar? – David
请检查我的更新答案。 –
来吧聊天http://chat.stackoverflow.com/rooms/48530/ror –