Неопределенная локальная переменная или метод «пользователь» - как мне сослаться на пользователя? - PullRequest
1 голос
/ 21 июня 2020

Я пытаюсь отобразить список пользователей на странице html .erb, но получаю сообщение об ошибке, что пользовательская переменная не определена.

Насколько я понимаю, для представления необходимо использовать @users переменную, которую необходимо вызвать в контроллере, который связан с маршрутом представления. Я пробовал это ниже, но мне кажется, что я неправильно называю контроллер (и, следовательно, метод индекса, который определяет @users). Как мне go исправить это, чтобы частичное отображение отображалось со списком пользователей?

просмотров / страниц / контактов. html .erb:

<table class='table table-condensed'>
  <thead>
    <tr>
      <th>Email</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody>
    <%= render 'contact', collection: @users, as: :user %>
  </tbody>
</table>

просмотров / страниц / _contact. html .erb:

<%= content_tag :tr, id: dom_id(user) do %>
    <td><%= user.email %></td>
    <td>
      <%= link_to 'Add Contact', [:new, :contactship, id: user], remote: true unless current_user.has_contactship?(user) %>
      <%# or link_to 'Add Contact', new_contactship_path(id: user), remote: true %>
      <%= link_to 'Accept Request', [:contactships, id: user], method: :post, remote: true if current_user.requested_contacts_with?(user) %>
      <%= link_to 'Remove Request', [:contactship, id: user], method: :delete, remote: true if current_user.pending_contacts_with?(user) %>
      <%= link_to 'Remove Friend', [:contactship, id: user], method: :delete, remote: true if current_user.contacts_with?(user) %>
    </td>
<% end %>

routes.rb:

Rails.application.routes.draw do
  resources :posts
  resources :contactships, only: [:new, :create, :destroy]
  devise_for :users
  authenticated :user do
    root "pages#my_circles", as: :authenticated_root
    get "/app/views/pages/to_post.html.erb", to: "pages#to_post", as: "to_post"
    get "/app/views/pages/my_vault.html.erb", to: "pages#my_vault", as: "my_vault"
    get "/app/views/pages/my_settings.html.erb", to: "pages#my_settings", as: "my_settings"
    get "/app/views/pages/contacts.html.erb", to: "pages#contacts", as: "contacts" #THIS ROUTE
  end
  root 'pages#home'
  namespace :api, defaults: { format: :json } do
    namespace :v1 do
      resources :circles, only: [:index, :show, :create, :update, :destroy]
    end
  end
end

controllers / pages_controller.rb:

class PagesController < ApplicationController
  def index
    @users = User.all
  end

Спасибо!

1 Ответ

2 голосов
/ 21 июня 2020
class PagesController < ApplicationController
  def index
    @users = User.all
  end

...

переименовать контакты. html .erb в index. html .erb

index. html .erb

<table class='table table-condensed'>
  <thead>
    <tr>
      <th>Email</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody>
    <%= render partial: 'contact', collection: @users, as: :user %>
  </tbody>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...