0

ホームページに掲載してほしい。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
4

1 に答える 1

1

でビューテンプレートXControllerを探すので、またはのいずれかにapp/views/X移動する必要がありhome.html.erbます。また、なぜ両方のコントローラーで同じメソッドを使用するのですか?app/views/static_pagesapp/views/usersapp/views/micropostshome

それでも問題が解決しない場合は、(a)参照しているURL、および(b)ファイルの内容を知りたいと思いroutes.rbます。

于 2012-09-23T01:49:04.127 に答える