Rails - 如何将数据从视图或URL传递给帮助程序

时间:2013-11-22 17:19:27

标签: ruby-on-rails

在Rails中,我使用Railscasts#213中的代码进行修改以构建日历。我用它来显示每天Event小时。

帮助代码为今天设置background-color,因此您可以轻松查看今天是哪一天。

我让它工作,以便您可以点击一天,表格会显示当天Events的详细记录。

这是用户点击日历中某一天时执行的代码:

<div><%= link_to 'View' , events_index7_path(:date_selected => date), :class => 'btn  btn-mini'%></div>

将所选日期放入网址,如下所示:

 .../events/index7?date_selected=2013-11-22

视图测试day_selected如下:

<% current_user.events.where(:event_date => @date_selected).each do |event| %>

我想为date_selected

设置css背景颜色

我正在尝试将dayselect类添加到帮助程序中:

def day_classes(day)
  classes = []
  classes << "today" if day == Date.today
  classes << "dayselect" if day == @date_selected
  classes << "notmonth" if day.month != date.month
  classes.empty? ? nil : classes.join(" ")
end

但是,它无法识别@date_selected

我也试过这个:

classes << "dayselect" if day == params[:date_selected]

UPDATE1:

这是日历的图片,因此您可以更好地了解我正在做的事情:

enter image description here

UPDATE2

查看日历代码:

  <%= calendar @date do |date| %>
  <%= date.day %>
  <% hours = current_user.events.where(:event_date => date).sum(:hours) %>
  <% if hours != 0 %>
    <div class="sumhours"><%= hours %></div>
  <% else %>
    <div> - </div>
  <% end %>
  <div><%= link_to 'View' , events_index7_path(:date_selected => date), :class => 'btn  btn-mini'%></div>
  

UPDATE3 如果我停止执行辅助代码来设置类,我会发现:

Request parameters  
{"date_selected"=>"2013-11-21", "controller"=>"events", "action"=>"index7"}

如何访问date_selected参数?

UPDATE4

这将突出显示从字符串转换的特定日期:

classes << "dayselect" if day == DateTime.strptime("2013-11-18", "%Y-%m-%d")

但是,如果我用过这个:

  classes << "dayselect" if day == DateTime.strptime(params[:date_selected], "%Y-%m-%d")

我明白了:

undefined local variable or method `params' for #<CalendarHelper

1 个答案:

答案 0 :(得分:0)

我无法弄清楚如何使用Rails,所以我使用了jQuery。

使用pure.js获取网址。

这是jQuery(Coffeescript):

url = $.url().param("date_selected")

$("#monthcalendar td").each ->
  $(this).addClass "dayselect" if $(this).attr('class') == url