我编写了一个Rails控制器函数,用于查询MySQL数据库,查找在特定日期范围内添加的条目。例如以下内容:
@foos = FooTableModel.where(created > ? AND created <= ?', DateTime.new(2011, 1, 26), DateTime.new(2011, 1, 29))
此查询非常适合我的目的。但是,我想要做的是允许用户设置他们想要的日期范围而不是明确设置它。我在某种程度上探讨了erb文件,并且我在访问数据方面取得了巨大的成功,我对改变我要求显示的数据感兴趣。
是否有任何类似于我想要实现的例子?我认为这是Rails开发人员希望让用户做的相当普遍的事情,但我对潜在客户没有太多好运。
答案 0 :(得分:2)
您的表单代码在哪里?
这是一个标准的REST表单:
<% form_tag(foo_path) do %>
<% select_date :start_date %>
<% select_date :end_date %>
<%= submit_tag "Submit", :disable_with => "Submitting..." %>
<% end %>
然后在您的控制器中,您可以使用参数来搜索这些日期。
start_date = params[:start_date]
end_date = params[:end_date]
请记住foo_path
需要保持平静的路线。如果不是,则需要传递哈希{:controller => 'foo', :action => "find"}
在您的控制器中,您可以执行以下操作:
def index
if params[:start_date] && params[:end_date]
start_date = params[:start_date]
end_date = params[:end_date]
@foos = Foo.find(:all, :conditions => ['created_at BETWEEN ? AND ?,' start_date, end_date
end
responds_to do |format|
format.html
end
end