Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 值的下拉列表,从结果集中选择,用作Ruby中Rails的过滤器_Ruby On Rails - Fatal编程技术网

Ruby on rails 值的下拉列表,从结果集中选择,用作Ruby中Rails的过滤器

Ruby on rails 值的下拉列表,从结果集中选择,用作Ruby中Rails的过滤器,ruby-on-rails,Ruby On Rails,我有一个搜索结果表单,它返回类文档的@documents列表。文档具有一种类型。一个类型有许多文档 我在搜索结果上有一个下拉列表过滤器,可以根据类型对@document列表进行过滤,但目前,该列表包含所有可能的类型。如果该类型的列表中至少有一个文档,我只希望该类型出现在下拉列表中 (状态还有第二个下拉列表,同样的问题也适用) 这是我到目前为止得到的,但它返回所有类型 <%= form_for :document_filter, :url => search_results_home_

我有一个搜索结果表单,它返回类文档的@documents列表。文档具有一种类型。一个类型有许多文档

我在搜索结果上有一个下拉列表过滤器,可以根据类型对@document列表进行过滤,但目前,该列表包含所有可能的类型。如果该类型的列表中至少有一个文档,我只希望该类型出现在下拉列表中

(状态还有第二个下拉列表,同样的问题也适用)

这是我到目前为止得到的,但它返回所有类型

<%= form_for :document_filter, :url => search_results_home_index_path, :html => {:class=>"form-inline"} do |f| %>
  <%= f.collection_select :document_type_id , DocumentType.alphabetically , :id,:name,{:prompt=>"Select document type"} %>
  <%= f.collection_select :document_status , Status.for_filter , :id,:name,{:prompt=>"Select document status"}  %>
  <%= f.submit "Go" %>
<%end%>
search_results_home_index_path,:html=>{:class=>“form inline”}do | f |%>
“选择文档类型”}%>
“选择文档状态”}%>

Rails有一种简单的方法来实现这一点吗?

您可以为包含文档的文档类型创建一个作用域,类似这样(在models/document\u type.rb中):

然后在您的集合中选择,使用范围:

  <%= f.collection_select :document_type_id , DocumentType.has_documents.alphabetically , :id,:name,{:prompt=>"Select document type"} %>
“选择文档类型”}%>

(我还没有试过,所以不能百分之百确定它能正常工作)

谢谢你的回复。与搜索结果(@documents)中包含文档的documenttype不同,这不适用于所有在整个集合中包含文档的documenttype吗?事实上,很抱歉,应该意识到您正在搜索的是一个筛选列表。你在筛选什么,一个或多个字段?多个,因此用户可以根据类型、状态或两者进行筛选。你最好根据集合生成这些下拉列表。比如:
“Select document type”}%>
由于这有点冗长,您可能需要考虑使用class-method.Hmm。现在获取一个将分页的错误<代码>未定义的方法用于#``的文档_类型。我不得不说,Rails完全让我困惑。。。
  <%= f.collection_select :document_type_id , DocumentType.has_documents.alphabetically , :id,:name,{:prompt=>"Select document type"} %>