6

私は現在、Rails 3.0.10 アプリを持っており、単純な関連付けを持つ 2 つのモデル (has_many と belongs_to) を作成しました。

ActiveAdmin プラグインをインストールし、対応する Ruby リソース ファイルを作成した後、奇妙な動作に気付きました。

以下では、「ジョブ ファイル」が「Ernet クライアント」に属していることがわかります。関連付けはすべて正しく機能していますが、表示名はクライアント名ではなく実際の ActiveRecord オブジェクトとして表示されています。

ここに画像の説明を入力

これは、「ジョブ ファイル」セクションの下にあるときのショー ビューです。

ここに画像の説明を入力

しかし、実際のクライアントを表示すると、正しいテキストが表示されます。

ここに画像の説明を入力

これを引き起こしている「ジョブファイル」リソースに何か問題があるに違いありませんが、何が原因なのかわかりません。グーグルの後、私はこれを見つけました: http://groups.google.com/group/activeadmin/browse_thread/thread/2a261e070efa7bae

JobFile.register ファイル内で、表示名を次のように指定しました。

filter :ernet_client, :display_name_methods => :display_name

しかし、これはうまくいきませんでした。他の利用可能な名前をすべて循環させましたが、役に立ちませんでした。

ActiveAdmin の依存関係を調べたところ、sass-rails が唯一のもののようですが、それは 3.1 を使用していて、Rails 3.0.10 を使用している場合です。

最後に、関連付けが実際に機能していることを確認するために、Rails コンソールを開いてジョブ ファイルを作成しました。

job = JobFile.new
=> #<JobFile hash returned>
job.ernet_client_id = 2
=> 2
job.ernet_client.client_name
=> Target

すべてが正常に機能しているようです。

誰でもこれを解決する方法について何か洞察がありますか?

4

2 に答える 2

10

モデルでto_sメソッドを定義しようとしましたか?ErnetClient

def to_s
  display_name
end

これは自動的に呼び出されるメソッドのようですto_s。コンソールでこれらのオブジェクトのいずれかを呼び出すと、同様の結果が得られます。

于 2011-10-29T22:35:13.007 に答える
5

ここで説明を見つけることができますFilter select show object instead of object name .

# Active Admin makes educated guesses when displaying objects, 
this is the list of methods it tries calling in order
        setting :display_name_methods, [ :display_name,
                                          :full_name,
                                          :name,
                                          :username,
                                          :login,
                                          :title,
                                          :email,
                                          :to_s ]

display_nameモデルで、full_name、または ... (上記のリストを参照) ... メソッドを定義できます。ActiveAdmin はそれらのいずれかを探します。

于 2014-02-17T19:50:42.410 に答える