缺少我在Rails教程

时间:2015-12-31 21:15:59

标签: ruby-on-rails railstutorial.org

我目前正在浏览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行对应于以下关注者函数中的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中的第25行到render @users

<% 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>

我花了好几个小时寻找错误,但无济于事。非常感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

错误在于:

<%= render @users %>

它试图找到一个同名的部分。要解决此问题,您应该创建部分users/_user.erb.html以便可以加载它。或者你应该特别命名要渲染的部分:

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

答案 1 :(得分:0)

我也遇到了同样的问题。我在views / users文件夹中创建了一个名为&#34; _user.html.erb&#34;的新部分。使用此代码:

<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>

这对我有用。

答案 2 :(得分:0)

我曾经遇到过同样的问题。但是,从批判的眼神来看,我发现在命名文件格式时我犯了一个错误,这导致了问题。检查格式,就可以了。