我试图弄清楚如何以最佳方式从模型渲染视图。到目前为止,我发现的最好的方法是扩展AbstactController,因为那时我可以将代码构造为MVC。现在,只剩下一个小问题:我必须在我的动作方法中显式调用render来呈现视图(在Rails中不需要)。
例如:要创建ActionMailer的替代方法,我实现了一个扩展AbstractController的EmailsController类。
class EmailsController < AbstractController::Base
include AbstractController::Rendering
include AbstractController::Layouts
include AbstractController::Helpers
include AbstractController::Translation
include AbstractController::AssetPaths
include ActionController::UrlWriter
helper ApplicationHelper
self.view_paths = "app/views"
def notification
render 'notification'
end
end
如何摆脱渲染调用?
谢谢!
答案 0 :(得分:1)
您还需要包含include ActionController::ImplicitRender
。如果尚未呈现响应主体,它将呈现默认视图:https://github.com/rails/rails/blob/5b2eb64ceb08cd005dc06b721935de5853971473/actionpack/lib/action_controller/metal/implicit_render.rb#L5