【问题标题】:Handle result of ajax request in Ruby on Rails received in json format处理 Ruby on Rails 中以 json 格式接收的 ajax 请求结果
【发布时间】:2012-09-16 13:15:34
【问题描述】:

我正在尝试通过 AJAX 进行身份验证,但无法弄清楚在 ajax 请求完成时如何显示消息。当电子邮件和密码无效时,我需要显示错误消息。

一个haml页面的代码

=form_for(resource, :as => resource_name, :url => session_path(resource_name), :remote => true, :format => :json) do |f| 
    = label :user, :email, "Email"
    = text_field :user, :email
    = label :user, :password
    = password_field :user, :password
    %input{:type => "submit", :value => "Sign in"}

和结果

你的想法?

【问题讨论】:

  • 我们需要您的 UsersController/SessionsController 代码来回答您的问题。
  • 是的,控制器是什么样的?

标签: ruby-on-rails ruby ajax json haml


【解决方案1】:

由于您使用的是 JSON 格式(仅数据,而不是操作),因此您需要某种客户端处理。

尝试在ajax:success 处理程序中处理响应。使用 jQuery,它可以是这样的:

$('#the_form_id').on('ajax:success', function(data, status, xhr) {
  if(data) {
    if(data.status) { // Login successful
      alert("Login successful");
    }
    else {
      alert(data.errors);
      // To show errors inside a DOM element
      $("#error-wrapper").html(data.errors);
    }
  }
});

【讨论】:

  • 在 ajax 请求中,您必须自己处理显示消息。如果您有一个特定的容器/ dom 元素保留用于显示 flash 消息,您可以修改 dimuchs answer 以在此处显示消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 2013-02-16
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
相关资源
最近更新 更多