Перенаправление на профиль пользователя в любое время возможно. Рубин на рельсах - PullRequest
0 голосов
/ 16 марта 2012

Поэтому я пытаюсь сделать ссылку на профиль пользователя! Итак, у меня есть это в контроллере пользователя:

class UsersController < ApplicationController

  def new
    #defining the "@user" object for the form_for
    @user = User.new    
  end

  #defining a function for the "show" html file
  def show
    #get user id by URL address
    @user = User.find(params[:id])
  end

  #handling user login succes or failure
  def create
    @user = User.new(params[:user])
    if @user.save

        #using "flash" variable Ruby
        #flash[:success] = "Welcome to the Sample App!" <<< use this !!

        #render success page
        redirect_to @user
    else
        #render failure page (using error partial page)
        render 'new'
    end
  end

  #mine to show user profile
  def show_user

    render 'show'

  end
end

и в моем маршрутах .rb я получил:

DemoApp::Application.routes.draw do

  get "intergration_test/authentication_pages"

  #Removed!
  #get "users/new"

  #ROOT page 
  root to: 'static_pages#home'

  #My routes
  match '/user_profile', to: 'users#show_user'

  #REST architecture for users
  resources :users

  #including the Sessions action
  resources :sessions, only: [:new, :create, :destroy]

  match '/signup',  to: 'users#new'
  match '/signin',  to: 'sessions#new'
  #Note the use of via: :delete for the signout route, which indicated that it should be invoked using an HTTP DELETE request
  match '/signout', to: 'sessions#destroy', via: :delete

end

Так почему же

  #mine to show user profile
  def show_user

    render 'show'

  end

возвращает мне ошибку:

undefined method `email' for nil:NilClass

это как пользователь нулевой! Я уже вошел в систему! поэтому у меня должен быть активный пользователь. даже если я использую redirect_to @user, это не работает! помочь?

Ответы [ 2 ]

1 голос
/ 16 марта 2012

скажем, что вы находитесь на странице индекса, и вы хотите создать ссылку для перенаправления на пользователя, вы можете просто использовать что-то вроде:

<%= link_to 'Show User', current_user %>

пользователь является объектом пользователя и по умолчаниюНа остальном маршруте вам понадобится показать действие страницы, поэтому вам не нужно создавать действие в вашем контроллере 'show_user'

И можете ли вы предоставить представление контроллера и как вы вызываете действие show_user

1 голос
/ 16 марта 2012

Я предполагаю, что шаблон show имеет доступ к 'user' через переменную экземпляра @user. Если это так, то вам нужно установить переменную экземпляра:

def show_user
 @user = current_user // Or other method for getting the logged in user. 
 render 'show'
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...