Используя поля от ассоциации (has_many) модель с formtastic в направляющих

Я искал и попробовал много, но я не могу выполнить его, как я хочу.. таким образом, вот моя проблема.

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 части, или нет. Но ни одно из тех решений не было чисто (например, работал на представление редактирования, но не на новый, потому что требуемые объекты не были созданы или сгенерированы, и генерация их вызвала путаницу).

Я хочу знать Ваши решения для этого!

9
задан Lenin Raj Rajasekaran 16 November 2013 в 13:22
поделиться

3 ответа

Хорошо, я пропустил революцию 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 %>
8
ответ дан 4 December 2019 в 15:17
поделиться

Если поля не существуют в новом представлении, вы можете просто проверить, является ли оно новым ( new_record? ) и представить другой набор полей (если вы перейдете в частичное, это может быть довольно чистым подходом).

1
ответ дан 4 December 2019 в 15:17
поделиться

Возможно, вам поможет опция Formtastic :label_method. E.g.

<%= form.input :movingworkers, :label_method => :worker %>

or

<%= form.input :movingworkers, :label_method => Proc.new { |x| "#{x.worker} #{x.quantity}" } %>
4
ответ дан 4 December 2019 в 15:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: