2014-06-24 80 views
2

可能菜鳥警告:新來的回報率Ruby on Rails的 - 在控制器使用的擔憂

我試圖使用回報率的擔憂。現在我只是有writen

#./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應該叫,但它是不。我也試圖在included do ... end塊中定義somethingfoo,但這也不起作用。


有什麼我失蹤了嗎?控制器可以關心這個問題嗎?

+0

爲什麼你想呼籲'Foo'什麼? http://stackoverflow.com/a/15078070/438992,http://blog.andywaite.com/2012/12/23/exploring-concerns-for-rails-4/等 –

回答

6

如果您包含模塊(不論是否由ActiveSupport::Concern擴展),該模塊的方法將成爲包含類/模塊的實例方法。

您的控制器方法應該因此讀

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

一旦它會讓我,謝謝一堆 –