在我index
的某个类item
的{{1}}页面上,我有一个过滤数据库中条目的表单。您可以按item
所有字段进行过滤,并且所有元素都已表示,因此代码如下:
<%= form_tag(url_for({ :controller => :item, :action => :filter }), :id => 'filter_form') do %>
<li>
<% Category.active.each do |category| %>
<% check_box_tag "categories[]", category.id, checked?(:categories, category.id) %>
<%= category.name %>
</li>
...
<% end %>
filter
方法中的控制器使用此处生成的查询过滤Item中的所有条目:
@items = Item.includes(:category, ...)
.joins(:item)
.where(:category => params[:categories]
...
依旧过滤器中的所有字段。
我在同一个控制器中也有一个export
方法,它将所有条目导出为CSV文件。视图呈现辅助方法中的内容,并将export
方法传递的变量@items作为Item.active
传递。
我想要的是使用另一种方法export_filter
,而不是导出Item
表中的所有条目,只导出已过滤的条目。换句话说,我想在我的export_filter
方法中获取我的过滤器表单的这些表单参数,并使用它们传递给视图和帮助器。我该怎么做?
答案 0 :(得分:0)
这通常由使用格式的单个index
方法处理(在您的情况下为html或csv)。过滤只是列表中的另一个范围 - 渲染由方法中的块处理,如:
respond_to do |format|
format.html
format.csv { render text: @products.to_csv }
end
像往常一样--Railscasts已经涵盖了这一点并且是一个很好的资源:
http://railscasts.com/episodes/362-exporting-csv-and-excel?view=asciicast
要设置格式 - 您可以执行另一个按钮(并查看按钮的值)或其他有助于选择格式的输入。