缺少我在 Rails 教程中找不到的部分错误

Missing partial error that I cannot find in Rails Tutorial

我目前正在阅读 Rails 教程书,我正在学习最后一章向示例应用程序添加简单视图。我通常很擅长发现我的错误,但在这种情况下,我在尝试呈现用户关注者和用户关注的人的视图时不断收到以下错误:

  ActionView::MissingTemplate 
(Missing partial users/_user with {:locale=>[:en], :formats=>[:html, :xml], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}.

当我查看终端日志时,它详细说明了错误消息:

  app/views/users/show_follow.html.erb:25:in `_app_views_users_show_follow_html_erb___427441195944621571_70028589061100'
  app/controllers/users_controller.rb:75:in `followers'

第 75 行对应于以下 followers 函数中的 render 'show_follow'

  def followers
    @title = "Followers"
    @user = User.find(params[:id])
    @users = @user.followers.paginate(page: params[:page])
    render 'show_follow'
  end

以及 show_follow.html.erb 中 render @users 的第 25 行:

<% provide(:title, @title) %>
<div class="row">
  <aside class="col-md-4">
    <section class="user_info">
      <%= gravatar_for @user %>
      <h1><%= @user.name %></h1>
      <span><%= link_to "view my profile", @user %></span>
      <span><b>Microposts:</b><%= @user.microposts.count %></span>
    </section>
    <section class="stats">
      <%= render 'shared/stats' %>
      <% if @users.any? %>
      <div class="user_avatars">
        <% @users.each do |user| %>
          <%= link_to gravatar_for(user, size: 30), user %>
        <% end %>
      </div>
      <% end %>
    </section>
  </aside>
  <div class="col-md-8">
    <h3><%= @title %></h3>
    <% if @users.any? %>
      <ul class="users follow">
        <%= render @users %>
      </ul>
      <%= will_paginate %>
    <% end %>
  </div>
</div>

我花了几个小时寻找错误,但无济于事。您的帮助将不胜感激!

错误在这里:

<%= render @users %>

它正在尝试查找具有相同名称的部分。要解决此问题,您应该创建部分 users/_user.erb.html 以便可以加载它。或者你应该特别命名要渲染的部分:

<%= render 'user_index', user_list: @users %>  # As an example

我也 运行 遇到了同样的问题。我使用以下代码在名为“_user.html.erb”的 views/users 文件夹中创建了一个新部分:

<li>
  <%= gravatar_for user, size: 52 %>
  <%= link_to user.name, user %>
  <% if current_user.admin? && !current_user?(user) %>
    | <%= link_to 'delete', user, method: :delete, 
                                  data: { confirm: 'Are you sure?' } %>
  <% end %>
</li>

这对我有用。

我遇到过一次同样的问题。然而,仔细一看,我意识到在命名我的文件格式时我犯了一个错误,这导致了问题。检查格式,大功告成。