1

Rails 4アプリにこのActiveModelがあります。

class MyModeltest
    include ActiveModel::Model
    acts_as_api
    attr_accessor :title, :content

    api_accessible :public do |template|
        template.add :title
        template.add :content
    end
end

このモデルをコントローラーから呼び出すと、エラーが返されます。

未定義のローカル変数またはメソッド `acts_as_api' for ...

では、ActiveModel の下で act_as_api を呼び出すことは可能ですか? はいの場合、これを行う方法を教えていただけますか?

前もって感謝します

より明確にするために、私の問題は静的変数acts_as_apiではなく、ActiveModelによって認識されないgem「acts_as_api」にあります

4

2 に答える 2

3

私はacts_as_apiの作者です。

ActiveRecordクラスで使用する場合は、クラスを で拡張する必要がありますextend ActsAsApi::Base

あなたの場合、これは

class MyModeltest
  include ActiveModel::Model
  extend ActsAsApi::Base
  acts_as_api
  attr_accessor :title, :content

  api_accessible :public do |template|
    template.add :title
    template.add :content
  end
end

wiki で例を見つけることができます。

https://github.com/fabrik42/acts_as_api/wiki/Declaring-api-templates-for-any-class%21-%28no-orms%29

さらにサポートが必要な場合は、お知らせください。:)

于 2013-10-12T16:19:28.773 に答える
1

モデル内で定数を使用する場合は、大文字にして初期化する必要があります。次のように定義します

class MyModeltest
    include ActiveModel::Model
    ACTS_AS_API = false
    attr_accessor :title, :content

    api_accessible :public do |template|
        template.add :title
        template.add :content
    end
end

クラス外で呼び出すには、MyModeltest::ACTS_AS_API を使用します。

于 2013-10-11T10:18:45.543 に答える