質問

onclickイベントを 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 のチュートリアル私自身の目的。

役に立ちましたか?

解決

わかりました、私はあなたが何をしているのか少し混乱していますが、私はいくつかの提案をしてみます。

link_to_function を使用する代わりに、 link_to_remote を使用します。関数へのリンクはjavascriptを呼び出しますが、実際にやりたいことは、コントローラーにコールバックしてからrjsを実行して、完全なパーシャルを置き換えるか、より可能性の高い、新しいパーシャル(ステップを含む)を現在の最後に追加することですステップ。

これは、ブログのコメントの最後にコメントを追加する例(remote_form_forではなくlink_to_remoteを使用することを期待)で見たすべての例に似ています。 http://media.rubyonrails.org/video/rails_blog_2.mov

link_to_remoteのドキュメントは、 http:// apiで確認できます。 rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html

他のヒント

RichHが示唆するように、 link_to_remote を使用することをお勧めします。あなたにとっての秘trickは、 @i を追跡することです。 link_to_remote のURLパラメーターとして、またはセッションオブジェクトに配置します。セッションをお勧めします。簡単に思えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top