Подтвердить что ты не робот

Создание страницы "Пользователи" с помощью программы "Разработка"

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

4b9b3361

Ответ 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