Переключение с form_for на remote_form_ для проблем с отправкой изменений в Rails - PullRequest
0 голосов
/ 26 мая 2010

еще один день с Rails, и сегодня я хочу использовать Ajax. linkt_remote_link для изменения текста было довольно простым, поэтому я подумал, что было бы легко переключить мой цикл form_for просто на форму запроса ajax с remote_form_for, но проблема с remote_form_for заключается в том, что он не сохраняет мои изменения?

Вот код, который работал:

<% form_for bill, :url => {:action => 'update', :id => bill.id} do |f| %>
# make the processing e.g. displaying texfields and so on
<%= submit_tag 'speichern'%>

Создает следующий HTML-код:

<form action="/adminbill/update/58" class="edit_bill" id="edit_bill_58" method="post"><div style="margin:0;padding:0;display:inline"><input name="_method" type="hidden" value="put" /></div>
<!-- here the html things for the forms -->
<input class="button" name="commit" type="submit" value="speichern" />

Вот код, который не сохраняет мне изменения и отправляет их:

<% remote_form_for bill, :url => {:action => 'update', :id => bill.id} do |f| %>
# make the processing e.g. displaying texfields and so on
<%= submit_tag 'speichern'%>

Создает следующий HTML-код:

<form action="/adminbill/update/58" class="edit_bill" id="edit_bill_58" method="post" onsubmit="$.ajax({data:$.param($(this).serializeArray()), dataType:'script', type:'post', url:'/adminbill/update/58'}); return false;"><div style="margin:0;padding:0;display:inline"><input name="_method" type="hidden" value="put" /></div>
<!-- here the html things for the forms -->
<input class="button" name="commit" type="submit" value="speichern" />

Не знаю, нужно ли учитывать что-то особенное при использовании remote_form_for (см. remote_form_for )

1 Ответ

1 голос
/ 26 мая 2010

Попробуйте это

<% remote_form_for :bill, bill, :url => {:action => 'update', :id => bill.id} do |f| %>

OR

<% remote_form_for bill, bill, :url => {:action => 'update', :id => bill.id} do |f| %>

Редакция.

Я думаю, что проблема в вашем ответе, ваш метод 'update' должен выглядеть примерно так:

def update
  @bill = Bill.find(params[:id])
  if  @bill.update_attributes(params[:bill])
    render :update |page|
      page.replace_html "some_div", :partial=>'some_partial', :object=>[@bill]
      page.replace_html "notice_div", "Bill updated succesfully"
    end
  else
    render :update |page|
      page.replace_html "some_div", :partial=>'some_partial', :object=>[@bill]
      page.replace_html "notice_div", ""
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...