在formstastic中排序accepts_nested_attributes_for

时间:2012-08-29 17:57:10

标签: ruby-on-rails nested-attributes formtastic

我正在尝试使用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?

2 个答案:

答案 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