我正在尝试使用formtastic来渲染嵌套表单。我在父模型中设置了has_many / accepts_nested_attributes_for。一切都很好。唯一的问题是我想对嵌套模型的顺序进行排序。
# this works but i want answers sorted a certain way
= semantic_form_for survey do |f|
= f.inputs :for => :answers do |answer_form|
= answer_form.input :content
如果我尝试做类似的事情:
# form styles become extremely messed up but the order is correct
= semantic_form_for survey, do |f|
= f.semantic_fields_for :answers, f.object.answers.joins(:question).order('questions.position') do |answer_form|
= answer_form.input :content
我甚至尝试使用:finder_sql和:class创建一个名为:sorted_answers的'假'has_many关系,但这也不起作用(answer_form是nil IIRC)。
我想我要问的是我是否可以使用:for => (关系)但指定关系的顺序。也许使用:for_options?
答案 0 :(得分:1)
我遇到了你的同样情况,这是我的解决方案:
你应该有一个名为“Answer”的模型,在default_scope中设置顺序:
class Answer < ActiveRecord::Base
default_scope :order => "id"
end
答案 1 :(得分:0)
使用formtastic 3.1.3,这对我有用
f.input :answers, as: :check_boxes, :member_label => :some_column, collection: Answer.order(:some_column)
要注意的是,集合必须是ActiveRecord_Relation类而不是数组,因为Formtastic是activerecord-ish