首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在rails中处理消息中的错误标志

问如何在rails中处理消息中的错误标志
EN

Stack Overflow用户
提问于 2015-12-21 01:26:40
回答 1查看 970关注 0票数 0

我在表单中将Ajax添加到我的签名中,当我输入真正的信息时,它会很好地工作,但是当我输入错误信息时,我无法处理错误消息。

sessions_controller.rb

代码语言:javascript
复制
class SessionsController < Devise::SessionsController
  skip_before_filter :verify_authenticity_token, :only => [:destroy, :create]

  def create
    self.resource = warden.authenticate!(auth_options)
    set_flash_message(:notice, :signed_in) if is_flashing_format?
    sign_in(resource_name, resource)
    yield resource if block_given?

    respond_to do |format|
      format.html { redirect_to root_path }
      format.js
    end
  end
end

形式上的签名

代码语言:javascript
复制
<div class="sign_in_modal">
  <div class="modal fade" id="sign_in" tabindex="-1" role="dialog" aria-labelledby="sign_in">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title" id="myModalLabel">Login</h4>
        </div>
        <div class="modal-body">
          <%= form_for(resource, as: resource_name, url: user_session_path, remote: true) do |f| %>
            <div class="form-group">
              <%= f.label :username, 'Username' %>
              <%= f.text_field :username, autofocus: true, class: 'form-control txt-main', id: 'sign_in_auto_focus' %>
            </div>

            <div class="form-group">
              <%= f.label :password, 'Password' %>
              <%= f.password_field :password, autocomplete: "off", class: 'form-control txt-main' %>
            </div>

            <% if devise_mapping.rememberable? -%>
              <%= f.check_box :remember_me %>
              <%= f.label :remember_me, 'Save your login?' %>
            <% end -%>
        </div>
        <div class="modal-footer">
            <%= f.submit "Login", class: 'btn btn-main btn-md' %>
          <% end %>
        </div>
      </div>
    </div>
  </div>
</div>

create.js.erb

代码语言:javascript
复制
$('.sign_in_modal .modal').modal('hide');
$('.header h1').after('<p class="username"><%= current_user.username.capitalize %></p>');
$('.sign_up_and_in').remove();
$('.navbar-nav').append('<li><a tabindex="-1" title="Edit Account Setting" href="/users/edit"><i class="fa fa-cog fa-lg"></i><span style="display: none;"  class="cog-text">Edit Account Setting</span></a></li>');
$('.navbar-nav').append('<li><%= link_to sanitize('<i class="fa fa-sign-out fa-lg"></i><span style="display: none;" class="sign-out-text">LogOut</span>'), destroy_user_session_path, :method => :delete, :tabindex => -1, title: "LogOut" %></li>');

在这种情况下,我如何处理错误消息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-21 22:14:06

我通过覆盖会话控制器的新操作来解决这个问题,如下所示:

代码语言:javascript
复制
def new
  respond_to do |format|
    format.js
  end
end

如果用户输入真实用户名和密码将登录,如果输入错误的用户名或密码,则new.js.erb文件将运行并显示错误的数据消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34387798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档