我正忙着观看演示者的 Rail 演员表,并想重构我的一位演示者以包含页面模板。
我正在观看的截屏视频是287-presenters-from-scratch
我已经按照他建议的方式初始化了一个演示者,并在应用程序帮助文件中创建了一个帮助方法..
我试图与演示者一起构建的视图是一个通知模板,它与许多上传的页面共享。
由于您一次可以上传多个文件,我们可能会收到一些通知,或者每种通知中的几个。上传成功和完成上传的数据,而一些损坏的上传可能需要新的导入模板,其他有错误的上传可能需要修复。通过演示者的通知视图如下所示。
- present_upload(host, current_account, current_user, context) do |uploads_presenter|
.pending_uploads
= uploads_presenter.display_pending_uploads
.faulty_uploads
= uploads_presenter.display_faulty_uploads
.corrupt_uploads
= uploads_presenter.display_corrupt_uploads
.completed_uploads
= uploads_presenter.display_complete_uploads
.successful_uploads
= uploads_presenter.display_successful_uploads
主持人举个例子
class UploadsPresenter
attr_reader :host, :user, :account, :context
def initialize(host, current_account, user, context, template)
@host = host
@user = user
@account = current_account
@context = context
@template = template
end
def h
@template
end
def display_pending_uploads
return unless uploads_pending?
s = []
pending_uploads.each do |upload|
s << h.render(partial: 'upload/pending_upload', locals: {upload: upload})
end
return s
end
def display_complete_uploads
return unless uploads_complete?
s = []
completed_uploads.each do |upload|
s << h.render(partial: 'upload/complete_upload', locals: {upload: upload})
end
return s
end
...
end
只有这个被呈现在页面上.. 它没有将其转换为可读的 html,而是作为一个已转换为字符串的数组?
我尝试调用return s.join
,但这只是将数组内部的内容转换为字符串,但这会以相同的方式呈现减去数组符号。
然后如何从演示者呈现部分内容,以便它们在视图中显示为 html?