2016-11-18 17 views
0

私はニュースアプリケーション用のサイドバーを構築しています。このアプリケーションでは、タイプをratingで構成します。評価が"sports"の投稿が私のサイドバーに表示されます。しかし、任意の時点で"sports"のランキングを持つ6つの投稿があります。Ruby on Railsの投稿を制限する表示

私のサイドバーには、"sports"というタグが付けられています。その投稿は、表示ページの現在の@postと同じtitleを持つことはできません。私はこれを試して、それは動作していません。

私はローカルページを開こうとすると、私はエラーとして

undefined method `limit' for #<Post:0x007f9b553ce1d0> 

を取得します。 @postステートメントでlimitを使用すると、limitが機能します。

誰かが助けることができますか?

<div class="col-md-11 col-md-push-1 sidebar2"> 
     <div class="sidebar_head_container"> 
      <h4 class="sidebar_header text-center">Local News</h4> 
     </div> 
    <% @posts.each do |p| %> 
      <% if p.ranking == "sports" %> 
       <% if p.title != @post.title %> 
        <% p.limit(1) do |x| %> 
         <a href='/posts/<%= p.slug %>'> 
          <div class="photo_div"> 
           <%= image_tag x.photo, class: "photo_small" %> 
           <h5 class="white_green"><%= x.title %></h5> 
          </div> 
         </a> 
        <% end %> 
       <% end %> 
      <% end %> 
    <% end %> 
    </div> 
+0

あなたはここで、コントローラのコードを更新することができます? –

+0

(多分)あなたのコントローラ '@posts中= Post.where(ランキング: 'スポーツ')。( '?タイトル<>'、@ post.titleを).first' –

答えて

0

ランダム投稿が必要な場合や、最初の投稿が必要な場合。

このようなことができます。

<% sidebar_post = @posts.select{ |p| p.ranking == "sports" && p.title != @post.title }.first %>

、ちょうど1つをレンダリングします。あなたがそこでアクティブなレコード関係を扱っていないので、あなたはポストインスタンスを扱っているので、制限は機能しません。

ランダム要素が必要な場合。ちょうど変更する.first.sample

このコントローラ/ビューのどこかで@postsを使用していることを前提としています。サイドバーのポストを取得するためにこれを使用している場合は、コントローラに移動してsql/arを使用してその要求を行うことができます。

関連する問題