构建一个rails表单来过滤索引页面?

G’day伙计们,我在过滤我系统中数千种商品的展示时遇到了问题。 根据我们正在构建的系统的规格,我们必须有一个表单,允许人们输入开始日期,然后是几分钟的间隔,以过滤项目的表示。 我已经构建了我的帮助函数来返回该间隔期内的所有交易,但我不能在我的生活中正确构建将在索引页顶部返回dateTime值和整数值的表单?

有任何想法吗? 我是否必须构建一个单独的模型对象来分配值,或者是否有更简单的方法?

在索引页面上,您可以创建这样的filter表单

<%= form_tag '', :method => :get do %> <%= text_field_tag :value_one %> <%= text_field_tag :value_two %> <%= submit_tag 'Filter' %> <% end %> 

然后,您的表单将在您的页面上使用查询字符串参数执行GET,然后在您的控制器中,您可以查找可能已传递的filter参数。

我喜欢在我的控制器中逐渐构建一个filter,即:

 def index filter = [] if params.has_key?("filter") if !params[:filter][:user_id].blank? id = params[:filter][:user_id] filter << ["user_id = #{id.to_i}"] end if !params[:filter][:project_id].blank? id = params[:filter][:project_id] filter << ["project_id = #{id.to_i}"] end if !params[:filter][:change_type_id].blank? id = params[:filter][:change_type_id] filter << ["change_type_id = #{id.to_i}"] end end @logs = LogEntry.where(filter.join(" AND ")).order('created_at DESC') end 

如果视图中未选择filter(我使用select_tag表单助手),则数据库查询将返回所有记录。