1

我正在尝试使用 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 => (relationship) 但指定关系的顺序。也许使用:for_options?

4

2 回答 2

1

我遇到了你同样的情况,这是我的解决方案:

您应该有一个名为“Answer”的模型,在 default_scope 中设置顺序:

class Answer < ActiveRecord::Base

  default_scope :order => "id"

end
于 2013-08-20T07:59:59.230 回答
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

于 2015-11-09T08:03:19.553 回答