在 rails 4 上渲染 json 未显示在视图中

render json not showing up in view on rails 4

我有一个表单设置为(远程:true 以通过 ajax 提交),用户可以在其中输入他们的电子邮件和邮政编码。如果记录被模型验证并成功保存,它会触发一个 javascript 脚本,相应地更改 dom 以通知用户成功。但是,如果记录未通过验证,我想通过 json 从服务器返回错误并将它们显示在表单附近的 div 中。但是我无法让循​​环的 "else" 部分工作并让 json 在视图上呈现。

在 chrome 开发工具中,当我尝试提交空白表单时,返回状态 200,响应为

{"email":["is invalid"],"zip":["is not a number","is too short (minimum is 5 characters)"]}" 

但是我怎样才能让这些错误从控制器返回并显示在视图中呢?

控制器-------------------------------------------- --->

class EngagesController < ApplicationController

  def now
    @sub = Subscriber.new
  end

  def create
    @sub = Subscriber.new(subscriber_params)

    respond_to do |format|
      if @sub.save
        format.html { render 'now', notice: 'User was successfully created.'     }
        format.js   {}
      else
        format.json { render :json => @sub.errors }
      end
    end
  end      


private
  def subscriber_params
    params.require(:engage).permit(:email, :zip)
  end

end

型号---------------------------------------- -------->

class Subscriber < ActiveRecord::Base

  validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]    {2,})\z/i
  validates :zip, numericality: {only_integer: true}, length: {minimum: 5}

end

不渲染 json,而是使用

format.js { render 'errors', errors: @subs.errors }

并且您需要编写名为 errors.js.erb 的视图文件,您将在其中使用 JavaScript 代码显示错误。