我试图在rails中创建一个启用ajax的窗体。当我点击提交按钮时,窗体正常保存(我可以看到更新发生在数据库中),但是,页面刚好位于那里(看起来好像什么都没有发生,没有重定向等),并且在我的Web检查,我看到以下错误:Rails的AJAX形式保存,重定向,更新问题
POST http://localhost:3000/user/mike 500 (Internal Server Error)
然而,当我点击上面的链接(HTTP://本地主机...)显示在页面包括:notice
。
我希望页面像通常那样重定向,并显示:notice
(如果可用)。我还希望能够将表单保存在ajax上,而不会在某个时间间隔(每分钟左右)重定向。这可能吗?
user_controller.rb
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to(@user, :notice => 'User saved.') }
format.js
else
format.html { render :action => "new" }
format.js
end
end
end
def update
@user = User.find_by_username(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to(@user, :notice => 'User updated.') }
format.js
else
format.html { render :action => "edit" }
format.js
end
end
end
而且,这里是我的表单标签:
<%= form_for @user, :remote => true, :html => { :multipart => true, :class => 'edit_profile' } do |f| %>
任何建议将是非常有益的...谢谢大家。
我没有时间收集链接,但应该定期查看ajax轮询以保存表单。如果您希望页面在提交时重定向,则应从表单中删除remote => true。默认情况下,Rails会查找一个update.js视图文件,以便在通过ajax发送表单时作出响应。如果你没有它,它在客户端不会做任何事情。 – Msencenb