簡體   English   中英

如何將模塊混合到Rails 3控制器中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM