ホームページに掲載してほしい。belongs_to has_many の関係があるので困っているのではないかと思います。各マイクロポストはユーザーに属し、各ユーザーは多くのマイクロポストを持っています。私はそれらをユーザーページに表示させました(ただし、これはそのユーザーのマイクロポストのリストであり、ホームページに掲載したいすべての人ではありません)。ビューから明確でない場合。2 つの個別のリストが必要です。種類が「購入」の全員のマイクロポストの 1 つのリストと、すべての「販売」マイクロポストの別のリスト。Kind は、マイクロポスト データベースの列です。今のところ何も表示されず、エラーもありません...
ここに 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>
これがapp/views/microposts/_micropost.html.erbです(これが重要かどうかはわかりません)
<li>
<span class="content"><%= micropost.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
<% if current_user?(micropost.user) %>
<%= link_to "delete", micropost, method: :delete,
confirm: "You sure?",
title: micropost.content %>
<% end %>
</li>
モデルファイル(micropost.rb)のマイクロポストの定義でスコープを使用することが重要かもしれません
scope :purchases, where(:kind => "purchase")
scope :sales, where(:kind => "sale")
これが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
ここに users_controller.rb があります
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