Pregunta

A pesar de todas las preguntas y soluciones que he leído hasta ahora, nada me ha funcionado todavía, aquí se muestra una página de perfil de usuario que ha iniciado sesión con Devise.También probé varias cosas en mis rutas.Mi error actualmente muestra: "No se pudo encontrar el usuario sin una identificación".Soy un novato en Devise, así que, aunque me gusta, ha sido un poco frustrante.Cualquier ayuda sería apreciada.Todavía muy en las etapas de aprendizaje.Gracias.

class UsersController < ApplicationController
  before_filter :authenticate_user!, :except => [:show]
  after_action :verify_authorized

  def index
    @users = User.all
    authorize User
  end

  def show
    @user = User.find(params[:id])
    authorize @user
  end

Rutas

Rails.application.routes.draw do

  devise_for :users
  devise_scope :user do
    get 'users/sign_in' => 'devise/sessions#new'
    get 'users/sign_out' => 'devise/sessions#destroy'
  end
  resources :user
    match 'users/show', to: 'users#show', via: 'get'



  root to: 'pages#home'
end
¿Fue útil?

Solución

match 'users/show', to: 'users#show', via: 'get'

Esta línea sugiere que enrutará la URL. users/show a tu controlador#acción users#show.Y dentro de tu controlador buscas el usuario con el id de params[:id].Excepto que nunca pasas un parámetro de identificación.Normalmente, la identificación se pasa en la URL (es decir, users/show/:id).Esa es la causa de tu error.

La solución depende de lo que esté intentando lograr.Puede pasar la identificación a través de la URL o, si desea, users/show para mostrar solo el perfil de usuario que inició sesión, agregaría una acción de controlador (llamada perfil, por ejemplo) y luego establecería/obtendría una variable de sesión con la identificación del usuario y redirigiría a la vista del usuario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top