Вход в Devise не работает / нет сообщений об ошибках

Ребята, я искал везде, чтобы решить эту проблему, но мне не повезло.

У меня есть система входа в систему, и я зарегистрировал учетную запись [email protected] в разработке, и в журнале я получил электронное письмо с подтверждением, и я перешел на это электронное письмо, и моя учетная запись была подтверждена. Теперь, когда я пытаюсь войти, консоль выдает мне это сообщение:

Started GET "/users/sign_in?utf8=%E2%9C%93&authenticity_token=iHIEXxGHWaIdtAGhcZ7EKvEEEYGmoEfgr1K8NcKb9nFIXuD6dpMVimOO6aBEdZJUWv9Irt%2FT0vnaucjW%2BgmJQQ%3D%3D&user%5Bemail%5D=admin%40admin.com&user%5Bpassword%5D=[FILTERED]&user%5Bremember_me%5D=0&commit=Log+in" for ::1 at 2016-06-01 13:11:54 +0200
Processing by Devise::SessionsController#new as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"iHIEXxGHWaIdtAGhcZ7EKvEEEYGmoEfgr1K8NcKb9nFIXuD6dpMVimOO6aBEdZJUWv9Irt/T0vnaucjW+gmJQQ==", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
  Rendered devise/sessions/new.html.erb within layouts/application (3.7ms)
  Rendered partials/_header.html.erb (0.5ms)
  Rendered partials/_menu.html.erb (0.2ms)
  Rendered shared/_breadcrumbs.html.erb (0.0ms)
  Rendered partials/_footer.html.erb (0.0ms)
  Rendered partials/_javascripts.html.erb (0.0ms)
Completed 200 OK in 143ms (Views: 52.6ms | ActiveRecord: 0.0ms)

После этого страница просто обновляется, и я не вхожу в систему. Когда я перехожу к повторной отправке инструкций по подтверждению, он говорит: «Электронная почта уже подтверждена, попробуйте войти».

Моя форма входа выглядит так:

<% provide(:title, "Sign in") %>
<div class="col-md-12">
  <form class="sign-box">
    <header class="sign-title"> Sign in </header>

    <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>

        <% if devise_error_messages!.present? %>
            <div class="alert alert-warning alert-icon alert-close alert-dismissable fade in" role="alert">
              <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
              <i class="font-icon font-icon-warning"></i>
              <%= devise_error_messages! %>
            </div>
        <% end %>

      <div class="field form-group">
        <%= f.label :email, class: 'float-left' %><br />
        <%= f.email_field :email, class: 'form-control', autofocus: true %>
      </div>

      <div class="field form-group">
        <%= f.label :password, class: 'float-left' %><%= link_to 'Forgot your password?', new_user_password_path, class: 'float-right reset' %>
        <%= f.password_field :password, class: 'form-control', autocomplete: "off" %>
      </div>

      <% if devise_mapping.rememberable? -%>
        <div class="field form-group">
          <div class="checkbox float-left">
            <%= f.check_box :remember_me %>
            <%= f.label :remember_me %>
          </div>
        </div>
      <% end -%>

      <div class="actions">
        <%= f.submit "Log in", class: 'btn btn-rounded' %>
      </div>

        <p class="sign-note">New to our website? <%= link_to "Sign Up", new_user_registration_path %></p>
    <% end %>
  </form>
</div>

Что это может быть, ребята? У меня нет вариантов после нескольких дней попыток.


person luissimo    schedule 01.06.2016    source источник
comment
эта информация о сервере предоставляется после того, как вы нажмете кнопку входа в систему?   -  person Ccr    schedule 01.06.2016
comment
Да, сообщение пришло после нажатия кнопки входа   -  person luissimo    schedule 01.06.2016
comment
каково значение url: session_path(resource_name)?   -  person Ccr    schedule 01.06.2016
comment
значение :user , то же имя, что и модель, которая автоматически создается devise.   -  person luissimo    schedule 01.06.2016
comment
Я имел в виду путь URL, а не имя ресурса   -  person Ccr    schedule 01.06.2016
comment
путь: new_user_session, глагол: GET, URL: /users/sign_in(.:format), действие контроллера: devise/sessions#new   -  person luissimo    schedule 01.06.2016
comment
при отображении это выглядит так: ‹form class=new_user id=new_user action=/users/sign_in accept-charset=UTF-8 method=post›‹input name=utf8 type=hidden value=✓ /›‹input type=hidden name =authenticity_token value=P5NdpCBLkJPXFeSE098P3pQKzoz4olaz2TpkvRTaMGr/v7kBR1/cu6kvDIXmNFmgP/GXo4HRw6qs0RBeLEhPWg== /›   -  person luissimo    schedule 01.06.2016
comment
ath: new_user_session, verb: GET ‹ — это путь, указанный в форме отправки? так не должно быть.   -  person Ccr    schedule 01.06.2016
comment
Я понимаю вашу точку зрения, и похоже, что это действительно причина проблемы, но как мне изменить получение сообщения. Я использовал только пути разработки по умолчанию. Я попытался создать файл create.html.erb в папке devise/sessions и отредактировал ссылку на страницу входа в user_session_path, но она все еще не работает и все еще обрабатывает метод get.   -  person luissimo    schedule 01.06.2016
comment
я обновил свой ответ, можете ли вы узнать, поможет ли это?   -  person Ccr    schedule 01.06.2016
comment
Хм, нет, все равно выдает ту же ошибку. и это: Обработка Devise::SessionsController#new как HTML   -  person luissimo    schedule 01.06.2016
comment
затем явно укажите метод публикации следующим образом: form_for( :user, url: user_session_path, method: :post) do |f|   -  person Ccr    schedule 01.06.2016
comment
если это не работает, попробуйте перезапустить сервер. поскольку вы, возможно, уже вошли в систему.   -  person Ccr    schedule 01.06.2016
comment
все равно не повезло дружище. Что-то идет не так, когда я захожу на страницу, еще до отправки, там написано: Started GET /users/sign_in for::1 at 2016-06-01 14:32:08 +0200 Processing by Devise::SessionsController#new as HTML   -  person luissimo    schedule 01.06.2016
comment
пожалуйста, проверьте консоль рельсов. у пользователя есть поле sign_in_count. если это 0, то вы не вошли в систему. Но если это число›0, то вы успешно вошли в систему.   -  person Ccr    schedule 01.06.2016
comment
это совершенно нормально. перед отправкой всегда почти Processing by Devise::SessionsController#new как HTML. это говорит о том, что вы нажали кнопку входа в систему, и форма входа отображается. Главное, что он говорит после отправки.   -  person Ccr    schedule 01.06.2016
comment
Хорошо, что я сделал, удалил new.html.erb (который был автоматически создан devise:views) и создал create.html.erb с тем же макетом. Теперь, когда я перехожу к sign_in, он дает мне стандартный макет устройства, и когда я заполняю свою информацию, он возвращает меня к моему пользовательскому макету, и когда я снова заполняю свою информацию, он внезапно работает. Я вошел в систему. но как мне мгновенно перейти к своему пользовательскому макету .... это меня напрягает, одна ошибка за другой.   -  person luissimo    schedule 01.06.2016
comment
new.html.erb — это место, где вы храните свою форму. create.html.erb здесь не нужен. когда происходит действие new, он отображает new.html.erb. после отправки этой формы будет запущено действие создания контроллера сеанса разработки. это все в форме URL   -  person Ccr    schedule 01.06.2016
comment
попробуйте новый проект. подпишитесь на этот пост guides.railsgirls.com/devise   -  person Ccr    schedule 01.06.2016
comment
помните, неудачи — это то, чему мы учимся. это неприятно, но оно того стоит. счастливое кодирование. также не забудьте обновить этот пост, если вам удастся решить эту проблему. вы уже на шаг ближе.   -  person Ccr    schedule 01.06.2016
comment
Я исправил проблему и опубликовал ответ .. спасибо за вашу помощь, я очень ценю это.   -  person luissimo    schedule 01.06.2016


Ответы (2)


Ответ был довольно прост все время

Мне пришлось изменить <form class="sign-box"> на <div class="sign-box">, потому что, по-видимому, у вас не может быть рубинового тега form_for внутри атрибута формы html.

person luissimo    schedule 01.06.2016

если этот ответ от сервера дается после отправки формы, значит, вы что-то напутали. проверьте свои маршруты.

когда мы отправляем форму входа, сервер должен показать

Processing by Devise::SessionsController#create as HTML

также, когда форма отправляется, запрос находится в POST, как показано ниже

Started POST "/users/sign_in" for ::1 at 2016-06-01 17:11:36 +0545

но ваш сервер отправляет запрос Get.

Started GET "/users/sign_in?utf8=%E2%9C%93&authenticit...

путь: new_user_session, глагол: GET, URL: /users/sign_in(.:format)

путь должен быть user_session_path с глаголом POST

обновить: попробуйте это и посмотрите, что произойдет.

form_for( :user, url: user_session_path) do |f|

update2: также я обнаружил, что если вы уже вошли в систему и все еще пытаетесь войти снова без выхода, она снова перенаправляется на SessionsController#new. попробуйте перезапустить сервер и понаблюдайте за сервером во время первого входа в систему.

person Ccr    schedule 01.06.2016