2012-02-20 9 views
1

Cocoon gemを使用してRails 3.1アプリにネストされたフォームがあります。Railsのネストされたフォームレコードから列の値(レコードID)を返す方法は?

子フォームでは、リンクをクリックすると子のIDを返し、JavaScript関数に渡す必要があります。

<%= form_for @parent do |f| %> 
    parent fields... 
    <%= f.fields_for :child do |child| %> 
    <%= link "run function", 'string-to-pass' => "#{child.id}" %> 
    child fields... 
    <% end %> 
<% end %> 

ネストされたレコードから列変数を返す正しい構文は何ですか?

child.id戻りundefined local variable or method "child"

私は親コントローラに@child変数を定義することもできますが、どのように私はむしろ親IDよりも、子IDに向かって指していますか?

ここでは単純なものが欠けていると思いますが、どのように組み合わされているのでしょうか?

関連情報への提案や指摘に感謝します。

ありがとうございます!

答えて

1

ように私は何かを示唆している:私はそれはそれが動作するかどうか私に教えてくださいテストしていませんchild.object.id

EDIT: 私は私の見解では、このようなコードを持っている:

<%= f.fields_for :children do |child| %> 
    <%= render "child_fields", :f => child %> 
<% end %> 

そして_child_fields.html.erb中:

<%= f.object.some_attribute %> 
and other view stuff 

を、これは動作します。

類似するようにコードを修正してみることはできますか?私はちょうど実現の一つは、あなたのfields_forにあなたが言う必要があります。

<%= f.fields_for :children 

いうより:

<%= f.fields_for :child 

あなたがここで起こっ1対多の関係を持っていることはもちろん、と仮定します。あなたがコントローラで@variablesの話をしているなぜあなたはjavascript関数をコールする場合

+0

ありがとう@adnanそれでも '未定義のローカル変数またはメソッド"子 "を返す –

+0

私の答えに編集を参照してください.. – Adnan

+0

今、私は愚かな気がします。私は完全に忘れてしまった/ f =>子のマッピングを見過ごしていた。ドー!はい、 'f.object.attribute'は完全に機能します。ありがとう、ありがとう、ありがとう。 (fields_forの子供の複数化は単に質問を書く際のミスであり、実際のフォームは正しく設定されています)。 –

0

は本当に理解していないが、とにかく... は、私はあなたには、いくつかのコードでヘルパーlink_to_functionを探しているのだと思います以下のように:

link_to_function('link', "myJSFunction(#{child.id});"

あなたの問題ということですか?

+0

Aledalgrandeに感謝、あなたの助けに感謝しますが、それは私の問題ではありません。私はjavascriptで何の問題もなく、javascriptを呼び出す必要はありませんが、子を持つ必要があります。他の場所で使用することができます。私の問題はchild.idの値を返すことができないことです。おそらく、ネストされたフォームの仕組みを理解していないかもしれません。上の構文を使用します - child.id - '未定義のローカル変数またはメソッド"子 "を取得します –

関連する問題