【问题标题】:Rails ajax form submit messageRails ajax 表单提交消息
【发布时间】:2012-04-30 20:55:16
【问题描述】:

我正在构建我的第一个 rails 应用程序,并且对 ruby​​ 和 rails 都很陌生。通过 ajax 提交表单后,我试图在页面上呈现提交消息。

我在表单中添加了 :remote => true 参数。但是,我似乎无法在我的应用程序中呈现消息。作为测试,我设置了一个新的 Rails 应用程序,并使用脚手架生成了带有表单的帖子模型和视图等。

我将远程 :remote => true 添加到生成的表单中。它将数据很好地提交给数据库。我已经读过我可以更新控制器以包含带有 format.js 的 js,在这种情况下将 posts_controller.rb func 更新为

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,不知道接下来应该尝试什么

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    你快到了。提交的表单由 create 操作处理,而不是由 new 处理。你已经掌握了处理 html 或 js 的语法——你只需要在你的 create 操作中使用它,以及一个包含你想要渲染的 js 的 create.js.erb。

    你的 PostsController 应该有一个类似于

    的创建函数
    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(例如,当提交的表单数据未通过模型的验证时)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 2018-04-05
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多