0

Rails 3.2 アプリ用に Ajax を使用して更新フォームを作成しようとしています。私は Ajax の初心者なので、いくつかのガイダンスが必要です。私が達成したいことは次のとおりです。

1. The user presses a button and a form slides down from the top in a div. 
2. The user updates the form and presses "update".
3. The parameters from the updated form is sent and saved to the database, and 
4. the form slides up again without making the user leave the page.

現在、フォームは次のようになっています。

<%= form_for(@user, :remote => true) do |f| %>
  <%= render 'shared/error_messages' %>
  <%= f.fields_for :oak do |oak| %>
    <%= oak.text_field :name, :placeholder => "Name" %>
  <% end %>
  <%= f.fields_for :energy_meter do |energy_meter| %>
    <%= energy_meter.text_field :energy_meter_id, :placeholder => "Id" %>
  <% end %>
  <%= f.submit "Update!", "data-role" => "button", "data-theme" => "b", "return" => "false" %>
<% end %>  

現在、次のような更新アクションがあります。

def update
  @user = current_user
  @user.update_attributes(params[:user])
end 

私のUsersControllerにあります。

現在、次のような update.js.erb ファイルもあります。

$(window.location.replace("/"))

やりたいことをするために update.js.erb に何を入れるべきか、またパラメーターを送信する方法がわかりません。現在、にリダイレクトするだけ /です。また、更新アクションのどこに何を入れるべきか疑問に思っています。現在はUsersControllerにありますが、フォームが配置されているPagesControllerに配置する必要がありますか?

ヒントやガイダンスは素晴らしいでしょう!

ありがとう。

4

3 に答える 3

0

respond_toブロックをコントローラーに追加format.jsし、コントローラーがファイルをレンダリングするように を追加する必要がありupdate.js.erbます。

この行は必要ありません:

$(window.location.replace("/"))

デフォルトでは、AJAX呼び出し時に URL は変更されません。

于 2012-05-07T09:52:06.110 に答える
0

に次のコードを追加しますaaplication.js

$("#BUTTON_ELEMENT").live("click", function() {
    $("#FORM_ELEMENT").slideDown();
});

$("#FORM_ELEMENT").live("submit", function() {
    var _form = $(this);
    $.post(_form.attr("action"), _form.serialize(), function() { _form.slideUp(); }, "script");
    return false;
});

テスト目的で、いくつかのアラートを追加しますupdate.js.erb

于 2012-05-07T09:31:23.140 に答える
0

これがこのケースに当てはまるかどうかはわかりませんが、これがjqueryを使用して検索フィールドを作成するようなものである場合...このコードをupdate.js.erbに入れるべきだと思いますか?

$('#DIV_ID').html('<%= escape_javascript(render("update")) %>');

「update」はフォームを含む _update.html.erb ファイルで、「#DIV_ID」はフォームをレンダリングする div です。

おそらく、この Railscast が私よりもうまく説明できると思います。 http://railscasts.com/episodes/240-search-sort-paginate-with-ajax?autoplay=true

于 2012-05-08T04:55:02.660 に答える