3

在我的 ActiveAdmin 应用程序中,我需要在侧边栏中有一个表单(仅适用于 show 方法),它将显示一个(目前)日期选择器。一旦用户点击日期选择器,整个页面应该重新加载考虑到选择的日期(在显示控制器内)。

关于如何在侧边栏中添加这个简单表单的任何想法?

编辑

我尝试了以下方法,但我不确定表单如何针对当前模型以外的专用控制器。

sidebar :history, :only => :show do
  form do |f|
    f.input :start_date, :as => :datepicker
  end
end

侧边栏中的表单如何针对当前模型之外的另一个控制器?

4

1 回答 1

1

我想你有一个表演控制器,并不意味着表演动作。

将视图变成一个叫做“whatever”的部分(我称之为)

所以,你的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)%>)

我没有测试过这个确切的代码,所以要注意拼写错误。

如果我需要编辑,祝你好运并发表评论

于 2012-12-18T14:47:13.743 回答