Ruby On Rails - 在控制器中使用关注点

时间:2014-06-24 19:09:19

标签: ruby-on-rails ruby web separation-of-concerns

可能的Noob警告: RoR新手

我正在尝试使用RoR中的问题。现在我只是有一个非常简单的关注写作

#./app/controllers/concerns/foo.rb
module Foo
  extend ActiveSupport::Concern

  def somethingfoo
    puts "Ayyyy! Foo"
  end
end

当我尝试在我的控制器中使用此问题时,我得到一个未定义的方法错误

#./app/controllers/foo_controller.rb
class FooController < ApplicationController

  include Foo

  def show
    Foo.somethingfoo # undefined method 'somethingfoo' for Foo:Module
    render plain: "Ohh no, It doesnt even show me because of the error above me"
  end
end

据我所知somethingfoo应该被召唤但事实并非如此。我也尝试在somethingfoo区块中定义included do ... end,但这也不起作用

有什么我想念的吗?控制器是否可以像这样使用?

1 个答案:

答案 0 :(得分:11)

如果包含模块(由ActiveSupport::Concern扩展或不扩展),该模块的方法将成为包含类/模块的实例方法。

因此,您的Controller方法应该阅读

def show
  somethingfoo
  render plain: "Yeah, I'm shown!"
end