onClickイベントをRailsのlink_to_functionにアタッチする
-
08-07-2019 - |
質問
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パラメーターとして、またはセッションオブジェクトに配置します。セッションをお勧めします。簡単に思えます。