2009-05-07 17 views
5

onclickイベントをlink_to_functionにアタッチすると、イベントをクリックすると、パーシャルを使用してページ上の要素がリフレッシュされます。onClickイベントをRailsのlink_to_functionにアタッチする

ユーザーが生成されたリンクをクリックすると、コードを含む部分がリフレッシュされ、iが更新されます。

def add_step_link(form_builder) 
    logger.info 'ADD_STEP_LINK' 
    link_to_function 'add a step' do |page| 
     form_builder.fields_for :steps, Step.new, :child_index => 'NEW_RECORD' do |f| 
     logger.info 'inserted js' 
     html = render(:partial => 'step', :locals => { :step_form => f, :i=>@i+=1}) 
     page << "$('steps').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_RECORD/g, new Date().getTime()) });" 
     end 
    end 
    end 

私はちょうど含まれ、より大きな形で部分的に持っている:私は技術のステップ数を追跡しようとしています

<%= add_step_link(technique_form) %> 

を。私が作成している形式では、ユーザーは一連の命令に新しいステップを追加できます。今、私はステップ1-7のデフォルトのフィールドを持っています。 1つのステップを追加すると、ステップ8が表示されます。問題は、後続のステップにも「8」という番号が付けられることです。

http://railsforum.com/viewtopic.php?id=28447の「動的フォームでの複数の子モデル」チュートリアルを私の目的に合わせて拡張しています。

答えて

5

あなたがしていることでちょっと混乱していますが、私は試していくつか提案します。

link_to_functionを使用するのではなく、link_to_remoteを使用してください。関数呼び出しにはjavascriptが必要ですが、実際に何をしたいのかは、コントローラにコールバックして、いくつかのrjsを実行して、完全な部分を置き換えるか、新しい部分(ステップを含む)を現在の最後に追加しますステップ。

これは(というremote_form_forよりはlink_to_remoteを使用して期待)http://media.rubyonrails.org/video/rails_blog_2.mov

することができますを通じて道の3/4を参照してください人々は彼らのブログのコメントの最後にコメントを追加あなたが見ているだろう、すべてのこれらの例に似ていますここでlink_to_remoteのドキュメントを参照してください:http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html

+0

私はlink_to_remoteが必要なものだと確信しています。サーバーへのリモート呼び出しを行い、ページに挿入できるHTML(またはJavascript)を返します。 –

0

RichHが示唆しているように私はlink_to_remoteを使用することをお勧めします。あなたのためのトリックは、@iを追跡しているようです。私はlink_to_remoteのURLパラメータとして、またはセッションオブジェクトに入れます。私はセッションをお勧めしたいと思います。

関連する問題