Я искал и попробовал много, но я не могу выполнить его, как я хочу.. таким образом, вот моя проблема.
class Moving < ActiveRecord::Base
has_many :movingresources, :dependent => :destroy
has_many :resources, :through => :movingresources
end
class Movingresource < ActiveRecord::Base
belongs_to :moving
belongs_to :resource
end
class Resource < ActiveRecord::Base
has_many :movingresources
has_many :movings, :through => :movingresources
end
Movingresources
содержит дополнительные поля, как quantity
. Мы работаем над представлениями для 'счета'. Благодаря formtastic для упрощения целой вещи отношений просто пишущий
<%= form.input :workers, :as => :check_boxes %>
и я получаю реальный хороший список флажка. Но то, что я не узнал до сих пор: Как я могу использовать дополнительные поля от 'movingresource', затем или под каждым флажком мои желаемые поля из той модели?
Я видел разные подходы, главным образом с вручную цикличным выполнением через массив объектов и создания соответствующих форм, использования: поскольку в form.inputs части, или нет. Но ни одно из тех решений не было чисто (например, работал на представление редактирования, но не на новый, потому что требуемые объекты не были созданы или сгенерированы, и генерация их вызвала путаницу).
Я хочу знать Ваши решения для этого!
Хорошо, я пропустил революцию accept_nested_attributes_for, это объясняет, почему он на самом деле не работает.
Это позволило мне сделать большой шаг вперед, но я думаю, что где-то у меня все еще будут проблемы с моими сложными отношениями ^ _ ^
class Moving < ActiveRecord::Base
has_many :movingworkers, :dependent => :destroy
has_many :workers, :through => :movingworkers
accepts_nested_attributes_for :movingworkers
end
<% form.inputs :for => :movingworkers do |movingworker| %>
<%= movingworker.inputs :worker, :quantity %>
<% end %>
Если поля не существуют в новом представлении, вы можете просто проверить, является ли оно новым ( new_record? ) и представить другой набор полей (если вы перейдете в частичное, это может быть довольно чистым подходом).
Возможно, вам поможет опция Formtastic :label_method. E.g.
<%= form.input :movingworkers, :label_method => :worker %>
or
<%= form.input :movingworkers, :label_method => Proc.new { |x| "#{x.worker} #{x.quantity}" } %>