从form_for切换到remote_form_for在Rails中提交更改的问题

时间:2010-05-26 07:11:20

标签: ruby-on-rails

另一天使用Rails,今天我想使用Ajax。用于更改文本的linkt_remote_link非常简单,所以我认为将form_for循环切换到带有remote_form_for的ajax请求表单也很容易,但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 个答案:

答案 0 :(得分:1)

试试这个

<% 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| %>

编辑。

我认为问题在于您的回复,您的“更新”方法应该类似于

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