如何在日历日期选择标记中的月份和日期发布参数?

时间:2014-08-22 22:32:25

标签: ruby-on-rails ruby ruby-on-rails-3 calendar

我安装了calendar_date_select gem,我试图在calendar_date_select标签中发布格式参数,只有月和日。

日历日期选择脚本工作正常,但是当我选择日期时,它会显示此格式“年 - 月 - 日”所以我想要的是单击这将只显示calendar_date_select_tag内的月和日可能吗?或者可能是另一种方式来删除这样的日志?

这是日志:

Processing TestController#sending (for 127.0.0.1 at 2014-08-22 17:17:06) [POST]
Parameters: {"d1"=>"01-01", "d2"=>"31-01", "authenticity_token"=>"yeah=", "commit"=>"Search"}

我不想每次都删除这一年来使这个工作,因为当删除年份并保持月和日时实际工作正常。

这是控制器

def sending
  @clients= Client.find_by_mysql(["select * from clients where date_format(happy_birthday,'%m-%d') BETWEEN ? AND ?",params[:d1],params[:d2] ])
end

这是视图

<head>
 <% CalendarDateSelect.format=(:hyphen_ampm )%>
 <% calendar_date_select_style "silver" %>
 <% translation_calendar %> 
</head>

<% form_tag :controller=>"test",:action=>"sending" do %>
  From: <%= calendar_date_select_tag "d1",params[:d1] %>
  TO:   <%= calendar_date_select_tag "d2",params[:d2] %>
  <%= submit_tag "Search", :class=>"button" %>
<% end %>

这是截图

enter image description here

我尝试了这个,但我为“01-01”得到了未定义的方法`strftime':String

<%= calendar_date_select_tag "d1",params[:d1].strftime("%m-%d")%>

请有人可以帮助我或建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我看到了你的问题,这很容易,试试这个:

在您的控制器中:

def sending
 ##### THIS IS IF YOU HAVE PROBLEMS WITH NIL PARAMS IN CALENDAR TAG
 if params[:d1].nil?
   @d1 = params[:d1]
 else
   if params[:d1].present?
     @d1 = Date.parse(params[:d1]).strftime("%m-%d")
   end
 end

 if params[:d2].nil?
   @d2 = params[:d2]
 else
   if params[:d2].present?
     @d2 = Date.parse(params[:d2]).strftime("%m-%d")
   end
 end
 ################

 @clients= Client.find(:all,:conditions=>['date_format(happy_birthday,"%m-%d") BETWEEN ? AND ?',@d1,@d2]  )
end

在您看来:

<% form_tag :controller=>"test",:action=>"sending" do %>
 From: <%= calendar_date_select_tag "d1",@d1 %>
 TO:   <%= calendar_date_select_tag "d2",@d2 %>
 <%= submit_tag "Search", :class=>"button" %>
<% end %>

希望这些提示可以提供帮助。