在哪里为Rails控制器放置Ruby辅助方法?

时间:2012-11-28 19:48:05

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 view-helpers

我有一些(或所有)控制器需要的Ruby方法。我尝试将它们放入/app/helpers/application_helper.rb。我已经将它用于视图中使用的方法。但是控制器看不到那些方法。还有其他地方我应该放或者我需要以不同方式访问这些帮助方法吗?

使用最新的稳定Rai​​ls。

6 个答案:

答案 0 :(得分:70)

您应该在ApplicationController

中定义方法

答案 1 :(得分:61)

对于Rails 4起,关注点是要走的路。这里有一篇不错的文章 http://richonrails.com/articles/rails-4-code-concerns-in-active-record-models

从本质上讲,如果您查看您的控制器文件夹,您应该会看到一个关注子文件夹。沿着这些行创建一个模块

module EventsHelper
  def do_something
  end
end

然后,在控制器中只包括它

class BadgeController < ApplicationController
  include EventsHelper

  ...
end

答案 2 :(得分:27)

你应该在应用程序控制器中定义方法,如果你有很少的方法,那么你可以按照以下方法进行操作

class ApplicationController < ActionController::Base    
  helper_method :first_method
  helper_method :second_method

  def first_method
    ... #your code
  end

  def second_method
    ... #your code
  end
end

您还可以包含帮助文件,如下所示

class YourController < ApplicationController
  include OneHelper
  include TwoHelper
end

答案 3 :(得分:15)

您可以使用view_context从控制器调用任何辅助方法,例如

view_context.my_helper_method

答案 4 :(得分:7)

Ryan Bigg的反应很好。

其他可能的解决方案是向控制器添加助手:

class YourController < ApplicationController
  include OneHelper
  include TwoHelper
 end

最诚挚的问候!

答案 5 :(得分:0)

将帮助程序包含在控制器中将最终将帮助程序方法公开为动作!

# With new rails (>= 5) 

helpers.my_helper_method


# For console

helper.my_helper_method