2013-01-15 55 views
0

我正在開發一個Rails插件,需要通過助手輸出複選框。將幫助器startup_exchange_optin('user')放置在scaffolded用戶#索引視圖中時,將顯示該複選框。將其放置在新的,編輯和節目的看法,我得到NoMethodError插件視圖助手失敗,新的,編輯和顯示視圖

undefined method `startup_exchange_optin' for #<User:0x0000010162c620> 

文件由init.rb稱爲:

# lib/startup_exchange.rb 
require 'startup_exchange/startup_exchange_helper' 

module StartupExchange 
end 

ActiveSupport.on_load(:action_view) do 
include StartupExchange::StartupExchangeHelper 
end 

助手:

# lib/startup_exchange/startup_exchange_helper.rb 
module StartupExchange 
    module StartupExchangeHelper 
    def startup_exchange_optin(object_name, method = 'startup_exchange_optin', options = {}, checked_value = '1', unchecked_value = '0') 
     check_box(object_name, 'startup_exchange_optin', options, checked_value, unchecked_value) 
    end 
    end 
end 

該插件不會是一顆寶石,這就是爲什麼需要init.rb。起初,我試圖使用Railtie,但我無法得到它初始化。 ActiveSupport.on_load 似乎至少適用於索引視圖。

+0

什麼是控制器代碼? –

+0

控制器代碼是未觸摸的腳手架。 – sime

+0

我把startup_exchang_option的調用放在了scaffolded Users#index動作中,我們可以看到這個調用放在動作中的代碼嗎?那不會是未受影響的腳手架。 –

回答

0
check_box(object_name, 'startup_exchange_optin'... 

#=> undefined method `startup_exchange_optin' for #<User:0x0000010162c620> 

您的User對象不響應`startup_exchange_optin'方法。

+0

儘管索引視圖呈現了一個未知方法的checkbox,但其他操作卻沒有。這讓我困惑。現在我明白了一點,就是在用戶模型(或者'acts_as')需要一個方法或者一列來呈現check_box之前。我不能簡單地生成一個未附加的check_box。 – sime