【发布时间】:2014-06-26 15:19:01
【问题描述】:
每次用户在 jquery ui datepicker 中更改月份时,我都会尝试对数据库进行查询以获取该月的可用日期。当他们选择日期时,它将再次向数据库查询当天的可用时间。
我应该这样做吗?我应该将其更改为每年吗?会不会记录太多? (我觉得如果我要发送一年中哪些日子有哪些小时可用)。
如何正确执行此操作?当我进行 Ajax 调用时,我收到“找不到模板”。
相关代码:
tasks_controller.rb
def new
if signed_in?
@task = Task.new
get_dates
else
redirect_to root_path
end
end
def get_dates(day=nil)
if !day
day = DateTime.now
end
day = day.utc.midnight
minus_one_month = (day - 1.month).to_time.to_i
plus_one_month = (day + 1.month).to_time.to_i
full_days_results = AvailableDates.all.select(['unix_day, count(*) as hour_count']).group('unix_day').having('hour_count > 23').where(unix_day: (minus_one_month..plus_one_month))
full_days_arr = full_days_results.flatten
full_unix_array = []
full_days_arr.each do |full_day|
tmp_date = Time.at(full_day.unix_day).strftime('%m-%d-%Y')
full_unix_array.append(tmp_date)
end
gon.full_days = full_unix_array
return
end
tasks.js.coffee
full_days = gon.full_days if gon
$ ->
$('.datepicker').datepicker(
dateFormat: 'mm-dd-yy'
beforeShowDay: available
onChangeMonthYear: (year, month, inst) ->
target = "#{month}-01-#{year}"
jqxhr = $.get("/getdates",
day: target
)
console.log(jqxhr)
$(this).val target
return
任务\new.html.erb
<%= f.label :end_time %>
<%= f.text_field :end_time, :class => 'datepicker' %>
routes.rb
...
match '/getdates',to: 'tasks#get_dates', via: 'get'
错误
Template is missing
Missing template tasks/get_dates, application/get_dates with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in: * "c:/dev/rails_projects/onager-web-app/app/views"
【问题讨论】:
-
据我所知,你需要渲染一些东西,例如
render :json => gon.full_days.to_json。此外,def get_dates(day=nil),您需要的将在params数组中,例如params[:day]
标签: javascript jquery ruby-on-rails ruby ajax