我正在创建一个需要非常自主的竞赛应用程序。该应用程序有一个名为“周”的资源。每个星期都有很多参赛作品#39;用户可以在本周添加条目,然后可以对其进行投票。
本周有一个名为' start_date'的数据库专栏。如果我用字符串填充它,例如" 16-03-2015"然后在Show视图中我可以拉入周参数并将字符串与今天的日期进行比较,并设置投票按钮是否有效。
在我的周控制器中,我使用一个名为set_dates的before操作,并设置了几个变量
def set_dates
@today = Date.today
@weekstart = Date.parse(@week.active_date)
@weekend = Date.parse(@week.active_date)+7
end
然后我可以在视图上设置if和else语句,以显示投票按钮,如果周是“活动”,即。今天的日期在active_date + 7天内
<% @entries.each do |entry| %>
<div class="entry">
<%= image_tag(entry.photo(:thumb)) %>
<%= entry.cached_votes_up %>
<% if (@weekstart..@weekend).include? @today %>
<%= link_to "Upvote", upvote_week_entry_path(entry.week_id, entry) %>
<%= link_to "Downvote", downvote_week_entry_path(entry.week_id, entry) %>
<% end %>
</div>
<% end %>
这很好,直到我意识到我需要一个活跃的一周&#39;在节目视图之外。我想在application_layout中的导航栏中添加一个链接到本周比赛,我需要本周指向哪一周投票活动。但是如果没有通过ID查找周,那么交叉引用它的active_date,我不确定如何做到这一点。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
如果有其他人发现这个问题要解决类似的问题,我通过在周资源中添加end_date列来解决问题,然后在应用程序控制器中为一个arel查询分配一个变量
应用 - 控制器
before_action :active_week
protected
def active_week
@aweek = Week.where("? BETWEEN start_date AND end_date", Date.today)
@active = @aweek.first
end
应用程序布局
<%= link_to "This Week", @active %>