Rails возвращает статус 500 после рендеринга нормально и без каких-либо объяснений - PullRequest
0 голосов
/ 23 марта 2019

Рендеринг представлений, принадлежащих другому действию (:show и :edit) из одного, называемого :profile.Все отрисовывается нормально, но статус установлен на 500.

Я пытался отрисовать его напрямую (и получить эту проблему), а также пробовал перенаправления (но это действительно изменить URL-адрес ... и это не такчто я хочу).Это происходит в обоих форматах :html и :json.

Вот мой код:

  # GET /users/profile
  # GET /users/profile.json
  def profile
    @user = current_user
    @profile = @user.profile

    authorize @user

    respond_to do |format|
      format.html { render :edit, status: :edit, location: @user }
      format.json { render :show, status: :show, location: @user }
      # format.json { redirect_to user_path(@user, format: :json), location: @user }
    end
  end

Разве Rails больше не работает таким образом Oo ??
Я былсмотреть в Интернет вроде бы нормально, я не понимаю.

Если я установлю некоторые отладки после того, как вызов respond_to будет выглядеть нормально.
Я бы хотел иметь хотя бы несколько журналовтреки, объясняющие, в чем проблема.

Вот некоторые дополнительные журналы, показывающие ошибку (из среды разработки):

Started GET "/users/1/edit" for 127.0.0.1 at 2019-03-23 16:00:47 +0100
Processing by UsersController#edit as HTML
  Parameters: {"id"=>"1"}
  User Load (0.9ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  User Load (0.5ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2  [["id", 1], ["LIMIT", 1]]
  Profile Load (0.6ms)  SELECT  "profiles".* FROM "profiles" WHERE "profiles"."user_id" = $1 LIMIT $2  [["user_id", 1], ["LIMIT", 1]]
  CACHE (0.1ms)  SELECT  "profiles".* FROM "profiles" WHERE "profiles"."user_id" = $1 LIMIT $2  [["user_id", 1], ["LIMIT", 1]]
  Rendering users/edit.html.slim within layouts/application
  Rendered devise/registrations/_edit.html.slim (7.2ms)
  Rendered users/_form.html.slim (19.2ms)
  Rendered users/edit.html.slim within layouts/application (24.2ms)
Completed 200 OK in 96ms (Views: 77.9ms | ActiveRecord: 2.1ms)


Started GET "/users/profile" for 127.0.0.1 at 2019-03-23 16:01:00 +0100
Processing by UsersController#profile as HTML
  User Load (0.7ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  Profile Load (0.4ms)  SELECT  "profiles".* FROM "profiles" WHERE "profiles"."user_id" = $1 LIMIT $2  [["user_id", 1], ["LIMIT", 1]]
  Rendering users/edit.html.slim within layouts/application
  Rendered devise/registrations/_edit.html.slim (7.7ms)
  Rendered users/_form.html.slim (20.5ms)
  Rendered users/edit.html.slim within layouts/application (25.4ms)
Completed 500 Internal Server Error in 85ms (Views: 77.7ms | ActiveRecord: 1.0ms)

1 Ответ

1 голос
/ 23 марта 2019

В вашем блоке respond_to вы устанавливаете опцию :status с помощью :edit и :show.
Это недопустимый статус коды.

Вы можетепроверьте список здесь: Макеты и рендеринг: опция статуса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...