AbstractController的子类需要显式渲染调用

时间:2010-12-30 05:36:21

标签: ruby-on-rails

我试图弄清楚如何以最佳方式从模型渲染视图。到目前为止,我发现的最好的方法是扩展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

如何摆脱渲染调用?

谢谢!

1 个答案:

答案 0 :(得分:1)

您还需要包含include ActionController::ImplicitRender。如果尚未呈现响应主体,它将呈现默认视图:https://github.com/rails/rails/blob/5b2eb64ceb08cd005dc06b721935de5853971473/actionpack/lib/action_controller/metal/implicit_render.rb#L5