私はRailsの2から、このAjax呼び出しに苦しんでいます:Rails3でこのAjaxを呼び出す方法は?
def add_task_link(name) link_to_function name do |page| page.insert_html :bottom, :tasks, :partial => 'task', :object => Task.new end end
は、どのように私はRailsの3でこれを表現することができますか?
おかげで、
私はRailsの2から、このAjax呼び出しに苦しんでいます:Rails3でこのAjaxを呼び出す方法は?
def add_task_link(name) link_to_function name do |page| page.insert_html :bottom, :tasks, :partial => 'task', :object => Task.new end end
は、どのように私はRailsの3でこれを表現することができますか?
おかげで、
のGithubで、このプロジェクトにいくつかのヒントがあります:https://github.com/ryanb/complex-form-examples
def link_to_add_fields(name, f, association) new_object = f.object.class.reflect_on_association(association).klass.new fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder| render(association.to_s.singularize + "_fields", :f => builder) end link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")") end
はさらに、私が考える
https://github.com/ryanb/complex-form-examples/blob/master/app/models/survey.rb
に示すようaccepts_nested_attributes_for使用することが重要です代わりにlink_to:remote => trueを使用することもできます。 link_to_functionは、onclick属性に入れたJavaScriptコードの文字列を受け入れるためのものです。だからではなく、あなたのヘルパーメソッドの、そして、あなたの新しいアクションで、あなたは.jsファイルをブロックするように応じる追加する必要が
<%= link_to 'My Link', new_task_path, :remote => true %>
のようなものを使用。
def new
@task = Task.new
respond_to do |format|
format.html
format.js { render :layout => false } # add this line
end
end
その後new.js.erb
と呼ばれるアプリ/ビュー/タスクの下にファイルを作成し、追加します。
$('body').append('<%= escape_javascript(render :partial => "form", :locals => { :task => @task }) %>');
部分のフォームはあなたのnew.html.erbのためにとにかく使用することができ、セットアップ(および提供edit.html.erbファイル)はうまくいくはずです。この例のリポジトリからいくつかの例を取った:https://github.com/nu7hatch/rails3-ujs-example/blob/master/私は、Railsでリモートのコーディング例をlink_toにたくさんしないと認めなければならない。私が行うほとんどのAJAX呼び出しは、JSON応答を使用しています。そこで私は、資産パイプラインの下にjsコードを書いています。
と何をすればよいのか分かりません。これはHTMLの通常のスニペットを読み込むための素敵な要約です。私がいる状況では、フォームの残りの部分と "同期"しなければならない入力フィールドを使用します。以下の解決策を完全に理解するには、まだAjaxについてもう少し学ぶ必要があります。フィードバックありがとうございます。 – poseid
これを正しく読んだら、その場でフォームにフィールドを追加したいのですか?それでは、上記のコードをそのまま使用して調整することができます。本文に追加するのではなく、フォームタグに追加します。必要なフィールドを含む別の部分を作成します。 new.js.erbファイルで部分名を参照するだけです。 – agmcleod
私はこれを試しました:link_to_function name、 "task" do | page | しかし、これは、 "onclick"属性の中にいくつかのJSコードを与えて、 – poseid