【发布时间】:2015-01-20 18:08:39
【问题描述】:
我对 Rails 很陌生,正在开发一个显示每日提交的应用程序。我现在正在尝试显示每天的帖子。所以我做了几件事:
将控制器实例变量设置为单个@submissions,它接受“num_days_ago”输入:
@num_days_ago = 1
@submissions = Submission.daily(@num_days_ago).paginate(page: params[:page], per_page: 10).order('rank DESC')
设置范围以响应 num_days_ago 输入:
scope :daily, -> (num) { where( created_at: (num.days.ago.beginning_of_day..num.days.ago.end_of_day)) }
添加了一些辅助方法来处理视图中的日期:
module WelcomeHelper
def the_date(num_days)
date = num_days.days.ago.to_date
date.to_formatted_s(:long_ordinal) end
def num_days_since_first_day
(Date.today - (Submission.last.created_at).to_date ).to_i end
end
在视图中创建了一个循环,使其显示所有每日帖子(稍后我将添加分页和无限滚动):
<div class="container">
<% (0..num_days_since_first_day).each do |num| %>
<h3><%= the_date(num) %></h3>
<ul>
<%= render @submissions %>
</ul>
<div id="show_more">
<%= link_to 'Show More', welcome_index_path(page: 2), class: "show_more_link", remote: true %>
</div>
<% @num_days_ago +=1 %>
<% end %>
</div>
此外,这里是在索引视图中显示的提交部分:
<li>
<%= render partial: 'votes/voter', locals: { submission: submission } %>
<%= submission.title %></br>
<%= submission.description %> | $<%= submission.price %> | <b><%= submission.merchant.name %></b> | Submitted by: <%= submission.user.name %>
</li>
</br>
所以现在,我遇到的问题是@submissions 实例变量将始终是第一天。所以我试图弄清楚如何让它响应 @num_days_ago ,它在 leach 循环之后被更新 += 1 。关于如何实现这一点的任何建议?
现在,它显示的是自创建帖子的第一天以来所有有帖子的日子,但每天显示的帖子都是第一天创建的 12 个帖子。
【问题讨论】:
标签: ruby-on-rails view controller bloc.io