我有一个简单的远程表单,带有一个输入和发送按钮。 我为 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)
但是在开发工具中我看到:
我做错了什么?
最佳答案
我不确定创建帖子后您想如何处理数据,但为了接收通过 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/