2016-10-20 3 views
0

タイトルのように - 私はその月に行われたすべてのブログ投稿を表示するリンクを作成しようとしています。私は彼らのような示さたいアーカイブインデックスページでRails - 月の投稿へのリンクをcreated_at月間で表示します

:私はポストへの応答を使用

ul { 
 
    list-style-type: circle; 
 
    } 
 

 
li { 
 
    display: block; 
 
    }
<h3>2016</h3> 
 
<ul> 
 
    <li>October</li> 
 
    <li>September</li> 
 
    <li>Etc.</li> 
 
</ul> 
 
<h3>2015</h3> 
 
<ul> 
 
    <li>Same deal here</li> 
 
</ul>

は、それはインデックスページで正しく表示するために取得するhereを発見しました(今のところ数カ月だけ)。しかし、ある月のリンクをクリックすると、すべての投稿が表示されます。 URLは7月のセクションではhttp://localhost:3000/posts?month=July+2016となっていますが、すべての投稿が表示されています。

ここに私のスニペットがあります。私は上記の答えから私のニーズに合わせて少し変更しました。

インデックス:

<% @posts_by_month.each do |m, p| %> 
    <div class="col-md-9"> 
     <ul> 
      <li><%= link_to m, posts_path(:month => m) %></li> 
     </ul> 
    </div> 
    <div class="col-md-3"> 

    </div> 
<% end %> 

archive_controller:私はpost_controllerかないでいることを入れているかどう

def index 
    @posts_by_month = Post.all.order(created_at: :desc).group_by { |post| post.created_at.strftime("%B %Y") } 

    if params[:month && :year] 
     date = Date.parse("1 #{params[:month]}") 
     @arch_posts = Post.where(publish: true).where(:created_at => date..date.end_of_month).order(created_at: :desc) 
    else 
     @arch_posts = Post.all 
    end 
end 

私は確認されませんでした。私は周りのものをシャッフルしようとしましたが、nothingsは働いていました。ここに私のpost_controller指数はケースにあります:

def index 
    if params[:search].present? 
     @posts = Post.matching_title_or_content(params[:search]).page params[:page] 
    else 
     @posts = Post.all.order(id: :desc).page params[:page] 
    end 

    @notif_count = Notification.where(notifiable_type: 'Visitor').count + Notification.where(notifiable_type: 'Comment').count 
    @mess_count = Message.where(status: false).count 
    @to_approve_count = Comment.where(status: false).count 
    end 

私はルビーに新たなんだので、任意の入力は大歓迎です。ありがとう!

+0

月または@ arch_postsの投稿を返すには '@ posts_by_month'が必要ですか? –

+0

@posts_by_monthと思います。私はちょっとそれを働かそうとしているいくつかの異なるものをつなぎ合わせた。 – TonyaL

答えて

0

私はあなたのビューコードを知らないので、これは適切な解決策ではありませんが、私はあなたのコードで気づいたいくつかのことについて言及します。

  1. if params[:month && :year]。私はこれが正しい構文だとは思わない。それはあなたが唯一の?month=July+2016 URLでので、これは、ここでJuly 2016+の値が空白異なっていないパラメータを表しているだけのparamsを送信しますしている見ることができるようにあなたは、任意のyearのparamsを送信していないif params[:month] && params[:year]
  2. ようにする必要があります。たぶんあなたは?month=July&year=2016のようなものが欲しいでしょう。
  3. Date.parse("1 #{params[:month]}")多分それは正しいですが、私は文字列の中に1を保持することによって達成しようとしているものについて疑いがあります。
+0

ありがとうございます。私はちょっと、それぞれがうまくいかなかった後に私が見つけたいくつかの異なる例からこれをまとめました。私は別のものを試して約4時間を費やしたので、私は本当に掴んでいました。 – TonyaL

関連する問題