2

输入选择框显示issues基于另一个输入选择框的选择的列表,该输入选择框显示我的School.rb模型中的值。但是,这issues按 issue_id 列出。我需要它按字母顺序列出和排序name我的模型列。Issue.rb

我已经尝试了所有我能想到的组合!

提前致谢..

<%= f.grouped_collection_select :issue_id, School.all, :issues, :name, :id, :name, :prompt => ""%>
4

4 回答 4

3

在没有看到你的模型的情况下在黑暗中拍摄:

<%= f.grouped_collection_select :issue_id, School.all, :issues, :name, :id, :name, :include_blank => true %>

然后将默认范围添加到您的问题模型。

default_scope :order => 'issues.name ASC'
于 2013-05-20T07:13:38.923 回答
1

一般来说,我会犹豫是否输入默认范围,尽管在这种情况下可能是良性的。相反,您可以在学校模型上添加一个方法并从选择中调用它。

通知:

<%= f.grouped_collection_select :issue_id, School.all, :ordered_issues, :name, :id, :name, :prompt => ""%>

在学校.rb:

def ordered_issues
  issues.order(:name)
end

您还可以通过传递School.order(:name)表格按字母顺序排列学校。

于 2016-07-18T18:16:47.307 回答
0

试试看嘛,

<%= f.select("issue_id", School.find(:all, :order => "name").collect {|p| [ p.name, p.id ] }, {:include_blank => 'None'}) %>
于 2013-05-20T07:08:20.763 回答
0

Rails 5 弃用了@Larry McKenzie 答案的语法。现在变成:

default_scope { order('issues.name ASC') }
于 2021-05-16T06:48:11.790 回答