Idear mostrar usuario
-
20-12-2019 - |
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
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.