0

私はajaxフォームのビューを持っています:

<%= form_tag( {:action => 'some_action'}, {:remote => true}) do %>
...
  <%= submit_tag "Submit" %>
<% end %>

さて、ターゲットアクションで、部分的に表示したい

def some_action
  # some logic
  render :partial => "some_partial"
end

部分は単なるhtmlです。_some_partial.html.erbになり得る

<br>Hi, this is the partial</br> 

フォームを送信すると、ブラウザでhtml応答パケットが(firebugのネットログとともに)受信されているのがわかりますが、htmlはどこにも表示されません。HTMLはどこにあるべきですか?アクションから部分的なHTMLビューをレンダリングする方法は?

4

2 に答える 2

1

パーシャルをレンダリングしていますが、レンダリングする場所を指定していません。

Rails 2では、次のようにできます:

def some_action
  # some logic
  render :update do |page|
    page.replace_html 'some_div_id', :partial => 'some_partial'
  end
end

しかし Rails 3 では、上記のコードはもはや有効ではありません。邪魔にならない Javascriptを参照してください

some_action.js.erbという名前のファイルを作成し、その中にコードを記述します。

// update div with id some_div_id
$("#some_div_id").html("<%= escape_javascript(render :partial => 'some_partial') %>");

コントローラーで

def some_action
  # some logic
  respond_to do |format|
    format.js
  end
end
于 2013-02-13T06:49:23.903 に答える
0

HTMLを送信して表示する方法を理解しました。theReqから、フォームに追加:remote => true, "data-type" => "html"し、ページの JavaScript で、返された html を ajaxSuccess でキャプチャして表示します。

$('form#whatever').on('ajaxSuccess', function (event, data, status, xhr) {
    $('div#target').html(data);
  }
)
于 2013-03-01T21:06:51.397 に答える