Ruby RoR:我怎样才能让我所有的用户都在一个地方出现?

Ruby RoR:我怎样才能让我所有的用户都在一个地方出现?,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我希望他们出现在主页上。我想我可能有麻烦了,因为有很多关系。每个微孔属于一个用户,每个用户都有许多微孔。我让他们出现在用户页面上(但这只是一个用户微操作列表,而不是我想在主页上显示的每个人)。以防看不清楚。我要两份单独的清单。一个是“购买”的每个人的微博客列表,另一个是“出售”的所有微博客列表。Kind是micropost数据库中的一列。现在什么都没有显示,也没有错误 这是app/views/static_pages/home.html.erb <div id="purchases lis

我希望他们出现在主页上。我想我可能有麻烦了,因为有很多关系。每个微孔属于一个用户,每个用户都有许多微孔。我让他们出现在用户页面上(但这只是一个用户微操作列表,而不是我想在主页上显示的每个人)。以防看不清楚。我要两份单独的清单。一个是“购买”的每个人的微博客列表,另一个是“出售”的所有微博客列表。Kind是micropost数据库中的一列。现在什么都没有显示,也没有错误

这是app/views/static_pages/home.html.erb

<div id="purchases list">
  <ol class="microposts">
    <%= render @purchases unless @purchases.nil? %>
  </ol>
</div>

<div id="sales list">
  <ol class="microposts">
    <%= render @sales unless @sales.nil? %>
  </ol>
</div>
这是microposts_controller.rb

class MicropostsController < ApplicationController
  before_filter :signed_in_user
  before_filter :correct_user,   only: :destroy


  def home
    @microposts=Micropost.all
    @purchases=@microposts.collect{ |m| m if m.kind == "purchase"}.compact
    @sales=@microposts.collect{ |m| m if m.kind == "sale"}.compact
  def show

    @micropost = Micropost.find(params[:id])
    @microposts = @user.microposts
    @purchases= @microposts.purchases
    @sales = @microposts.sales

  end
class UsersController < ApplicationController
  before_filter :signed_in_user, 
                only: [:index, :edit, :update, :destroy, :following, :followers]
  before_filter :correct_user,   only: [:edit, :update]
  before_filter :admin_user,     only: :destroy

  def index
    @users = User.paginate(page: params[:page])
  end

  def show
    @user = User.find(params[:id])
    @micropost=Micropost.new
    @microposts = @user.microposts
    @purchases= @microposts.purchases
    @sales = @microposts.sales
  end

  def home

    @microposts = Micropost.all
    @purchases = @microposts.collect{ |m| m if m.kind == "purchase"}.compact
    @sales = @microposts.collect{ |m| m if m.kind == "sale"}.compact
  end
class MicropostsController
这是users_controller.rb

class MicropostsController < ApplicationController
  before_filter :signed_in_user
  before_filter :correct_user,   only: :destroy


  def home
    @microposts=Micropost.all
    @purchases=@microposts.collect{ |m| m if m.kind == "purchase"}.compact
    @sales=@microposts.collect{ |m| m if m.kind == "sale"}.compact
  def show

    @micropost = Micropost.find(params[:id])
    @microposts = @user.microposts
    @purchases= @microposts.purchases
    @sales = @microposts.sales

  end
class UsersController < ApplicationController
  before_filter :signed_in_user, 
                only: [:index, :edit, :update, :destroy, :following, :followers]
  before_filter :correct_user,   only: [:edit, :update]
  before_filter :admin_user,     only: :destroy

  def index
    @users = User.paginate(page: params[:page])
  end

  def show
    @user = User.find(params[:id])
    @micropost=Micropost.new
    @microposts = @user.microposts
    @purchases= @microposts.purchases
    @sales = @microposts.sales
  end

  def home

    @microposts = Micropost.all
    @purchases = @microposts.collect{ |m| m if m.kind == "purchase"}.compact
    @sales = @microposts.collect{ |m| m if m.kind == "sale"}.compact
  end
class UsersController
您的
XController
将在
app/views/X
中查找视图模板,因此您需要将
home.html.erb
app/views/static_页面
移动到
app/views/users
app/views/microstops
。另外,为什么两个控制器中都有相同的
home
方法


如果这对您不起作用,我想知道(a)您正在浏览的URL是什么,以及(b)您的
routes.rb
文件中有什么。

您似乎缺少
microstostscocontroller\home
结尾。我希望这会导致一个错误,所以这可能是一个打字错误?而且,我认为
选择{m | m.kind='purchase'}
会优于
。收集{m | m if m.kind='purchase'}.compact
,但这并不能直接解决您的问题。您对类型的看法是正确的。但这并没有修复错误。和.select在有效的控制台工作得很好。我不得不将home.html.erb移到micropost文件夹中,并将routes.rb文件更改为首先路由到那里,而不是静态页面/home。非常感谢。