Rails ajax表单提交信息

3
我正在构建我的第一个Rails应用程序,对Ruby和Rails都很新。我试图在通过ajax提交表单后在页面上呈现提交消息。
我已经在我的表单中添加了:remote => true参数。但是我似乎无法在我的应用程序中呈现消息。作为测试,我设置了一个全新的Rails应用程序,并使用脚手架生成了帖子模型和视图等,并使用表单。
我向生成的表单添加了remote :remote => true。它可以将数据正确提交到数据库。我已经阅读过,我只需要更新控制器以包含js格式化,例如更新posts_controller.rb函数:
def new
  @post = Post.new

  respond_to do |format|
    format.html # new.html.erb
    format.js
  end
end

有一些教程说,你可以在views/posts文件夹中添加new.js.erb或create.js.erb文件(不确定应该是哪一个),然后这个文件就会被执行,但实际情况是除了提交数据外,什么也不会发生。

我还尝试过:

format.js { render :js => "alert('Hello Rails');" }   

作为测试。

我正在使用Rails 3.1,但是不知道该尝试什么。

1个回答

7

您已经快完成了。提交的表单由create动作处理,而不是new。您已经正确处理了html或js的语法,只需要在create动作中添加相应代码以及一个包含您需要呈现的js的create.js.erb文件即可。

您的PostsController应该有一个类似于以下内容的create函数:

def create
  @post = Post.new(params[:post])

  respond_to do |format|
    if @post.save
      format.html 
      format.js 
    else
      format.html { render :action => 'new' }
      format.js   { render 'fail_create.js.erb' }
    end
  end
end

创建一个名为create.js.erb的文件(在帖子的视图目录中),包含以下内容:
alert('Hello Rails');

如果一切顺利,您应该没有问题。创建第二个文件名为fail_create.js.erb,其中包含任何您想要呈现的javascript,以防失败(例如,当提交表单数据未通过模型验证时)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接