[英]How do you mixin a module into a Rails 3 controller
我有一個模塊
module Foo
def normalize name
# modify and return
end
end
我可以將它混合到一個模型中就好了......
class Something
include Foo
end
Something.new.normalize "a string" # works
並嘗試混合到控制器......
class SomeController < ApplicationController
include Foo
def some_action
normalize "a string"
end
end
SomeController#some_action#在功能測試中工作,但不在rails服務器中!
我已經嘗試了各種形式的模塊,擴展了ActiveSupport :: Concern,添加了一個包含的塊並將normalize更改為類方法,但我得到了相同的結果。 為什么這會在功能測試中起作用,但不能在它之外?
我感覺我只是錯過了一些簡單的事情。
它在測試中“工作”的原因是測試還包括模塊並調用normalize方法:
class SomeControllerTest < ActionController::TestCase
include Foo
這讓它可以提供給控制器...不知何故。
刪除include Foo也使測試失敗。
為了使控制器工作,我改變了
normalize "a string"
至
self.normalize "a string"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.