#ruby-on-rails #ruby #byebug
#ruby-on-rails #ruby #byebug
Вопрос:
Вот мой github для моего проекта. Я вставил byebug во все действия моего контроллера для отладки этой формы входа…
<h1>Login</h1>
<%= form_with model: @user do |form| %>
<%= render "partials/usererrorform" %>
<%= form.label :user_name %>
<%= form.text_field :user_name %>
<br>
<%= form.label :password %>
<%= form.password_field :password %>
<br>
<%= form.submit "LogOn"%>
<% end %>
class LogInController < ApplicationController
include ApplicationHelper
...
def post_login
byebug
@user = User.find_by(user_name: params[:user][:user_name])
if @user amp;amp; @user.authenticate(params[:user_name][:password])
session[:user_name_id] = @user.id
redirect_to user_path(@user)
else
@user ||= User.new
render :login
end
end
...
end
Может кто-нибудь сказать мне, почему мой byebug не отображается в моем терминале при нажатии LogOn
?
Это вывод, когда я нажимаю LogOn
…
Started POST "/users" for ::1 at 2020-11-10 09:34:53 -0600
(0.3ms) SELECT sqlite_version(*)
(0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
Processing by UsersController#create as JS
Parameters: {"authenticity_token"=>"tg1lTsGuYekpNftf6PxqaBLY1LJ61uS/xM/6YwOT2JS3siDaFe7RJCw57JdvNJrDJbRJoB9pHl8B9BE1oBPTug==", "user"=>{"user_name"=>"admin", "password"=>"[FILTERED]"}, "commit"=>"LogOn"}
Rendering users/new.html.erb within layouts/application
Rendered partials/_usererrorform.html.erb (Duration: 0.5ms | Allocations: 317)
Rendered partials/_userform.html.erb (Duration: 6.5ms | Allocations: 4161)
Rendered users/new.html.erb within layouts/application (Duration: 7.2ms | Allocations: 4634)
[Webpacker] Everything's up-to-date. Nothing to do
Completed 200 OK in 246ms (Views: 47.0ms | ActiveRecord: 0.8ms | Allocations: 29844)
Где я ошибаюсь? Почему не byebug
работает?
Комментарии:
1. Куда ты на самом деле звонишь
byebug
?2. В LoginController, post_login, я снова отредактировал, чтобы вы могли видеть это выше.
Ответ №1:
В вашем выводе журнала задевается контроллер UsersController#create, а не LoginController#post_login . Вам нужно либо изменить форму, чтобы попасть в этот контроллер, либо вместо этого вставить свой byebug в действие UsersController#create .
Processing by UsersController#create as JS
Комментарии:
1. Рад помочь! Поверьте мне, когда я говорю, что мы все делали это не раз 🙂