Создание шоу-страницы «Пользователи» с помощью Devise - PullRequest
43 голосов
/ 17 августа 2011

Я пытаюсь создать страницу пользователя show (которая будет функционировать как страница профиля), но не совсем понимаю, как это сделать с помощью Devise. Не похоже, что Devise поставляется с каким-либо определением show - есть ли какой-нибудь способ, которым я могу получить доступ к контроллерам, которые Devise внедряет для его создания, или мне нужно их переопределить?

Ответы [ 4 ]

70 голосов
/ 17 августа 2011

Вы должны сгенерировать users_controller, который наследуется от application_controller и определить там свой собственный show метод.Не забудьте создать вид и маршруты для него.Пример:

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

#in your view
<%= @user.name %>

#routes.rb
match 'users/:id' => 'users#show', via: :get
# or 
get 'users/:id' => 'users#show'
# or
resources :users, only: [:show]
35 голосов
/ 20 января 2012

Не забывайте, что маршруты ваших пользователей должны быть ниже маршрутов devise_for пользователей, например:

#routes.rb
devise_for :users
resources :users, :only => [:show]

Кроме того, если вы используете имя пользователя или адрес электронной почты в качестве первичного ключа вместо обычногоid, вы должны избегать конфликтов маршрутизации, объявив ваши маршруты следующим образом:

#routes.rb
devise_for :users, :path_prefix => 'd'
resources :users, :only => [:show]
15 голосов
/ 17 августа 2015

отображение профилей current_user / other_user с помощью devise:

После установки устройства

Создать контроллер пользователя:

rails generate controller Users

Затем создайте действие show и найдите пользователя с идентификатором params:

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

Создайте файл show.html.erb в папке просмотра пользователя:

<%= @user.email %>

Ссылка на страницу просмотра пользователей:

<%= link_to "current_user_show", current_user %>

Теперь, если вы хотите просмотреть другие профили, создайте действие index в контроллере пользователя:

def index @users = User.all end

Создайте index.html.erb в папке просмотра пользователя, затем:

<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>

Ссылка для этого будет:

<%= link_to "show_index_of_users", users_path %>

Это свяжет вас с файлом index.html.erb пользователей, где вы создадите цикл и ссылку на профиль пользователя:

<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>

Это должно работать!

0 голосов
/ 17 августа 2011

вы можете генерировать представления, используемые devise, так что вы можете изменить их так, как хотите.

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