如何从控制器向jQuery发送json响应并检查它?

我有这个问题:我正在检查控制器中的用户电子邮件并发送json成功响应,如果已经采取并添加输入的CSS样式,我也需要阻止提交并添加一些消息。

这是我的checkemail行动(使用这篇文章 – http://paydrotalks.com/posts/45-standard-json-response-for-rails-and-jquery ):

def checkemail if !User.where('email = ?', params[:email]).empty? format.jsonr do render :json => { :status => :ok, :message => "Success!", }.to_json end end end 

在我的路线:

  checkemail GET /checkemail(.:format) match "/checkemail", to: 'edit_user#checkemail' 

和我的jQuery:

  $('#user_email').focusout(function() { $.getJSON('/checkemail', { email: $('#user_email').val() }, function(data) { $('#user_email').addClass("error"); }); }); 

我的HTML输入代码:

   

来自mime_type初始化文件:

  Mime::Type.register_alias "application/json", :jsonr, %w( text/x-json ) 

来自Fiddler:

  Request : GET /checkemail?user@mail.com HTTP/2.0 Response(RAW tab) : Missing template edit_user/checkemail JSON tab is empty 

问题:如何检查是否发送了json请求? 如何阻止提交表单并添加一些消息?

为什么是format.jsonr ? 对我而言似乎是一个错字。