此输入选择框根据另一个输入选择框的选择显示issues
列表,该列表显示我School.rb
中的值模型。但是,这会列出issue_id的issues
。我需要它按字母顺序列出name
模型的Issue.rb
列并对其进行排序。
我已经尝试过我能想到的每一种组合!
提前致谢..
<%= f.grouped_collection_select :issue_id, School.all, :issues, :name, :id, :name, :prompt => ""%>
答案 0 :(得分:3)
在没有看到你的模特的情况下在黑暗中拍摄:
<%= f.grouped_collection_select :issue_id, School.all, :issues, :name, :id, :name, :include_blank => true %>
然后为您的问题模型添加默认范围。
default_scope :order => 'issues.name ASC'
答案 1 :(得分:1)
我会犹豫是否要进入一般的默认范围,尽管在这种情况下可能是良性的。相反,您只需在学校模型上添加一个方法,然后从选择中调用它。
中的
:
<%= f.grouped_collection_select :issue_id, School.all, :ordered_issues, :name, :id, :name, :prompt => ""%>
在school.rb:
def ordered_issues
issues.order(:name)
end
您还可以通过在表单中传递School.order(:name)
来按字母顺序排列学校。
答案 2 :(得分:0)
试试吧,
<%= f.select("issue_id", School.find(:all, :order => "name").collect {|p| [ p.name, p.id ] }, {:include_blank => 'None'}) %>
答案 3 :(得分:0)
Rails 5 弃用了@Larry McKenzie 答案的语法。现在变成:
default_scope { order('issues.name ASC') }