另一天使用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)
答案 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