在存档索引页面上,我希望它们显示为:
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>
&#13;
我使用了发现here的帖子的回复,让它在索引页面上正确显示(现在只需几个月)。但是,当我点击某个月的链接时 - 它会显示所有帖子。该网址为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:
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
我不确定我是否应该把它放在post_controller中。我试图改变周围的事情,但没有发挥作用。以下是我的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
我是Ruby的新手,所以欢迎任何输入。谢谢!
答案 0 :(得分:0)
这不是正确的解决方案,因为我不知道你的视图代码,但我仍然会提到你在代码中注意到的一些事情。
if params[:month && :year]
。我不认为这是一个正确的语法。它应该像if params[:month] && params[:year]
year
参数,因为您可以看到网址中只有?month=July+2016
,因此这只会发送July 2016
值为+
的参数?month=July&year=2016
表示空白空间而不是不同的参数。也许你想要Date.parse("1 #{params[:month]}")
。1
也许这是正确的,但我怀疑你是通过在字符串中保留# before you call delete
house.delete_reason = 'banana'
# and then you can retrieve it in your function
@receiver(pre_delete, sender=House)
def delete_house(sender, instance, **kwargs):
reason = getattr(instance, 'delete_reason', '')
...
来实现的。