私は現在Rails 3.0.10アプリを持っており、has_manyとbelongs_toという単純な関連付けを持つ2つのモデルを作った。Rails 3 - ActiveAdmin - テキストの代わりにActiveRecordオブジェクトを表示
ActiveAdminプラグインをインストールし、対応するRubyリソースファイルを作成した後、私はいくつかの奇妙な動作に気付きました。
以下、「ジョブファイル」が「Ernetクライアント」に属していることがわかります。アソシエーションはすべて正しく動作していますが、表示名はクライアント名ではなく実際のActiveRecordオブジェクトとして表示されます。
"ジョブファイル" セクションの下には、show図である:
しかし、私は実際のクライアントを表示するために行く場合は、正しいテキストが表示されます。
"ジョブファイル"に何か問題があります。これを引き起こしているrceしかし、私はそれが何ができるか把握することはできません。私はこれで表示名を指定しJobFile.registerファイル内http://groups.google.com/group/activeadmin/browse_thread/thread/2a261e070efa7bae
:
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
すべてはそれが必要として動作しているようです。
誰もがこれを解決する方法についての洞察力を持っていますか?
私が提案したように、ErnetClient.rbモデルでto_sメソッドを定義しました。それは、active_admin/resource/index.html.arbファイルで、未定義のローカル変数または#のメソッド 'display_name 'のエラーを引き起こします。しかし、私はシンボル ":display_name"もメソッドに入れます。これにより、フィルタのドロップダウンでは、すべてのドロップダウン選択肢に対して ":display_name"が文字通りレンダリングされました。 –
PhillipKregg
さて、あなたは 'display_name'メソッドを持っていません。 'to_s'メソッドは、あなたの' ErnetClient'オブジェクトに対して表示したい文字列を返します。 –
私が見ているところでは、display_nameはviewhelpersのActiveAdminプラグインに既に存在するメソッドです:https://github.com/gregbell/active_admin/blob/master/lib/active_admin/view_helpers/display_helper.rb。私のアプリがそれを見るのを妨げている何かがありますか? – PhillipKregg