在我的ActiveAdmin应用程序中,我需要在侧边栏中显示一个表单(仅用于show方法),该表单将显示单个(目前)datepicker。一旦用户点击了日期选择器,整个页面就应该重新加载,并考虑所选的日期(在节目控制器中)。
有关如何在侧边栏中添加此简单表单的任何想法?
修改
我尝试了以下内容,但我不确定该表单如何针对除当前模型之外的专用控制器。
sidebar :history, :only => :show do
form do |f|
f.input :start_date, :as => :datepicker
end
end
侧边栏中的表单如何定位到另一个控制器而不是当前模型?
答案 0 :(得分:1)
我认为你有一个节目控制器,并不代表节目动作。
将视图变成一个名为“what”的部分(我称之为)
所以,你的whatever.erb.html看起来像这样
<%= render "whatever" %>
如果您使用Jquery Ui datepicker,则可以添加onSelect功能
$(".date").datepicker({
dateFormat: "yy-mm-dd",
onSelect: function() {
$('#range_form').submit();
}
}).attr( 'readOnly' , 'true' )
如果您想要一个范围在视图中添加两个日期字段的表单标记,否则您只需添加一个
<%= form_tag('/range', :id => "range_form", :remote => true) do -%>
<%= text_field_tag 'from', Date.now.strftime("%Y-%m-%d"),:class => "date"%>
<%= text_field_tag 'to', Date.now.strftime("%Y-%m-%d"), :class => "date"%>
<% end %>
为此,您必须在routes.rb
中添加路线match "/range/" => "show#todo_range", :as => :range
在你的节目控制器中
def range
time_range = ((Date.parse(params[:from]).midnight..Date.parse(params[:to]).midnight)
@whatever = Whatever.where(:date => time_range)
end
然后添加一个js视图来处理回调
$(".maindiv").empty().append(<%=j(render @whatever)%>)
我没有测试过这个确切的代码,所以请注意拼写错误。
如果我需要编辑
,祝你好运和评论