2012-02-16 9 views
5

私はRailsAdminをRails 3アプリケーション用に実行しています。これにはSaleとMerchandという2つのモデルがあります。両者の間にはHABTMの関係があります。 RailsAdminでは、販売が追加または編集されると、利用可能な商品のリストが通常の方法で表示されます。ただし、商品の「名前」列のみが表示されます。私は、リストが意味をなさせるために値を含める必要がある別の列を持っています。これをRailsAdminインターフェイスにどのように追加すればよいですか?RailsAdminのリストに列の値を追加する

RailsAdmin docsは、フィールド宣言が現在のレコードインスタンスを含むバインディングハッシュにアクセスできると言っていますが、これを実装する方法の例は見つかりません。助けてくれてありがとう。

答えて

5

私はこのためにカスタムオブジェクトラベルメソッドを使用することを提案したいと思います。

config.model Merchandise do 
    object_label_method 
    :custom_label 
    end 
end 

そして、あなたのActiveRecordのモデルは、インスタンスのラベルのための方法含まれます:あなたのRailsAdminの設定は次のようになります。これは、利用可能バインディング変数についてのご質問にお答えしていません

class Merchandise < ActieRecord::Base 
    def custom_label 
    "#{self.label} #{self.another_column} #{self.another_column2}" 
    end 
end 

を、私それが根本的な問題に対処することを願っカスタムフィールドビューでどの変数にアクセスできるかを確認したい場合は、〜/ rails_admin/app/views/rails_admin/main /のビューを見ることができます。簡単なgrepでは、これらのビューではbindings [:object]にアクセスできますが、IIRCではアクセス可能な他のバインディング変数がいくつかあります。

+0

であることができますので、object_label_methodは、モデル内に直接追加することができます特定のモデル内のすべての設定を保持します(追加のボーナスとして、新しい設定変更のためにサーバを再起動する必要はありません)。 –

5

使用可能な、少なくとも次のオブジェクトがあります:あなたは、この場合に必要なもの

bindings[:object] # the actual object 
bindings[:view] # you can access view helpers here 
bindings[:controller] # you can access the controller 

をただ他人のために追加したいbindings[:object]

関連する問題