小编典典

Rails - 如何在控制器中使用 Helper

all

虽然我意识到您应该在视图中使用帮助器,但我需要在控制器中使用帮助器,因为我正在构建要返回的 JSON 对象。

它有点像这样:

def xxxxx

   @comments = Array.new

   @c_comments.each do |comment|
   @comments << {
     :id => comment.id,
     :content => html_format(comment.content)
   }
   end

   render :json => @comments
end

如何访问我的html_format助手?


阅读 80

收藏
2022-06-04

共1个答案

小编典典

注意: 这是在 Rails 2天内编写并接受的;

您可以使用

  • helpers.<helper>Rails 5+(或ActionController::Base.helpers.<helper>)中
  • view_context.<helper>( Rails 4 & 3 ) (警告:每次调用都会实例化一个新的视图实例)
  • @template.<helper>导轨 2
  • 在单例类中包含助手,然后singleton.helper
  • include控制器中的助手(警告:将使所有助手方法变为控制器操作)

选项 1: 可能最简单的方法是将您的帮助模块包含在您的控制器中:

class MyController < ApplicationController
  include MyHelper

  def xxxx
    @comments = []
    Comment.find_each do |comment|
      @comments << {:id => comment.id, :html => html_format(comment.content)}
    end
  end
end

选项 2: 或者您可以将辅助方法声明为类函数,并像这样使用它:

MyHelper.html_format(comment.content)

如果您希望能够将其用作实例函数和类函数,则可以在帮助程序中声明这两个版本:

module MyHelper
  def self.html_format(str)
    process(str)
  end

  def html_format(str)
    MyHelper.html_format(str)
  end
end

希望这可以帮助!

2022-06-04