Я пытаюсь создать страницу User show
(которая будет работать как страница профиля), но я не понимаю, как это сделать с помощью Devise. Не похоже, что Devise поставляется с любым типом определения show
- есть ли способ получить доступ к контроллерам, которые разрабатывает Devise, чтобы сделать один или я должен переопределить их?
Создание страницы "Пользователи" с помощью программы "Разработка"
Ответ 1
Вы должны сгенерировать 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]
Ответ 2
Не забывайте, что ваши маршруты пользователей должны быть ниже маршрутов devise_for пользователей, например:
#routes.rb
devise_for :users
resources :users, :only => [:show]
Кроме того, если вы используете имя пользователя или адрес электронной почты в качестве первичного ключа вместо обычного идентификатора, вам следует избегать конфликтов маршрутизации, объявив свои маршруты следующим образом:
#routes.rb
devise_for :users, :path_prefix => 'd'
resources :users, :only => [:show]
Ответ 3
отображение профилей current_user/other_user с использованием:
После установки dev
Создать контроллер пользователя:
rails generate controller Users
Затем создайте действие show и найдите пользователя с параметром id:
def show
@user = User.find(params[:id])
end
Создайте файл show.html.erb в папке просмотра пользователя:
<%= @user.email %>
Ссылка на страницу пользователей:
<%= link_to "current_user_show", current_user %>
Теперь, если вы хотите просмотреть другие профили, создайте действие индекса в контроллере пользователей:
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 %>
Это свяжет вас с файлом users.html.erb users, вы создадите цикл и ссылку на профиль пользователей:
<% @users.each do |user| %>
<%= link_to user.username, user %>
<%= user.email %>
<% end %>
Это должно сработать!
Ответ 4
вы можете генерировать представления, используемые при разработке, поэтому вы можете изменить их так, как хотите.
rails g devise:views