ruby-on-rails - Rails远程表单成功,但没有返回数据

标签 ruby-on-rails ajax coffeescript ruby-on-rails-5

我有一个简单的远程表单,带有一个输入和发送按钮。 我为 ajax 创建了监听器:成功:

$ ->
  $form = $('#post-form')

  $form.on 'ajax:success', (e, data, status, xhr) ->
    console.log e
    console.log data
    console.log status
    console.log xhr

还有我的 Controller :

  def create
    @post = Post.new(post_params)
    @post.user_id = 3

    if @post.save
      render partial: 'posts/view', locals: { post: @post }, status: :ok
    else
      render json: @post.errors, status: :unprocessable_entity
    end
  end

我看到请求在后端传递并返回状态 200:

Rendered posts/_view.html.erb (3.0ms) [cache miss]
Completed 200 OK in 480ms (Views: 466.6ms | ActiveRecord: 7.0ms)

但是在开发工具中我看到:

enter image description here

我做错了什么?

最佳答案

我不确定创建帖子后您想如何处理数据,但为了接收通过 JSON 发送到操作的数据,您必须返回<来自该操作的 em>JSON,如下所示:

def create
  @post = Post.new(post_params)
  @post.user_id = 3

  respond_to do |format|
    if @post.save
      format.html { render partial: 'posts/view', locals: { post: @post } }
      format.json { render json: @post, status: :created }
    else
     format.html { render :new } # assuming you have a view file named "views/posts/new.html.erb"
      format.json { render json: @post.errors, status: :unprocessable_entity }
    end
  end
end

这样,如果请求是 JSON,您就可以处理该请求,如果它只是简单的 HTML,您也可以处理该请求。

关于ruby-on-rails - Rails远程表单成功,但没有返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43876352/

相关文章:

ruby-on-rails - Ruby on Rails : How to pass parameters from view to controller with link_to without parameters showing up in URL

javascript - AJAX 调用 - 逻辑去哪里了?

javascript - Bootstrap Typeahead - 不要自动选择第一项?

jquery - 如何阻止远程表单提交?

ruby-on-rails - Ruby/Rails - 流式传输音频的方法 (mp3/wav/etc)...Gem/Plugins vs HTML5?

ruby-on-rails - Railscast 中的建筑测量 Rails 5

ruby-on-rails - Ruby on Rails 与 self 的多对多关系

asp.net - 在不刷新网页的情况下加载数据库中的数据

c# - 从 jQuery 调用带有 params object[] args 的 PageMethod

javascript - 在没有 jQuery 的情况下在 AngularJS 中扩展 DOM 对象的推荐方法?