基本的なネストされたフォームがあります。ネストされたフォームのモデルの仮想属性にアクセスしたい。
Model 1: Lease
Has_many :transactions
accepts_nested_attributes_for :transactions, :reject_if => lambda { |a| a[:dated].blank? }, :allow_destroy => true
...
Model 2: Transaction
belongs_to :lease
def balance_to_date(aDate)
#Returns the current balance up to aDate
...
end
...
ネストされた形式で、次のようなものを入れたいと思います。
<td style="width:100px;"><%= nested_f.text_field :dated, size: 8 %> </td>
<td style="width:100px;"><%= nested_f.text_field :label, size: 8 %> </td>
<td style="width:100px;"><%= nested_f.text_field :credit, size: 6 %> </td>
<td style="width:100px;"><%= nested_f.text_field :debit, size: 6 %> </td>
<td style="width:100px;"><%= nested_f.balance_to_date(:dated) %> </td>
そして、私は以下が私にこれまでのバランスを与えて欲しいです。
ネストされた_f.balance_to_date(:dated)
またはのようなことをすることができるように
ここに示すようにコードを実行すると、次のようになります。
undefined method `balance_to_date' for#<ActionView::Helpers::FormBuilder:0xac78bac>
仮想属性エラーを除いて、このフォームは期待どおりに機能します。
コードは、その時点までの残高を持つ編集可能なトランザクションのテーブルを生成する必要があります。([xx]は入力フィールドを表示する私の方法です)。
Dated Label Credit Debit Balance
[ 1/1/2012 ] [ Rent due ] [ ] [ 600 ] -600
[ 1/2/2012 ] [ Payment ] [ 600 ] [ ] 0
[ 2/1/2012 ] [ Rent due ] [ ] [ 600 ] -600
[ 2/2/2012 ] [ Payment ] [ 500 ] [ ] -100
[ 3/1/2012 ] [ Rent due ] [ ] [ 600 ] -700
[ 3/6/2012 ] [ late fee ] [ ] [ 50 ] -750
[ 3/7/2012 ] [ Payment ] [ 800 ] [ ] 50
[ 4/1/2012 ] [ Rent due ] [ ] [ 600 ] -550
モデルの仮想属性にアクセスして表示する方法と、表示されている現在のレコードの日付に関するアドバイスをいただければ幸いです。前の質問を複製していないといいのですが。
Rails3.2.12とRuby1.9.3を使用しています。
ありがとう!フィル