Со следующими моделями Store и Service, управляемыми с MongoMapper:
class Store
include MongoMapper::Document
key :service_ids, Array, :typecast => 'ObjectId'
many :services, :in => :service_ids
end
class Service
include MongoMapper::Document
key :name, String
many :stores, :foreign_key => :service_ids
end
У меня есть эта форма, сделанная с помощью Formtastic:
<%= semantic_form_for @store, :url => admin_store_path(@store), :method => :put do |form| %>
<%= form.input :service_ids, :label => "Select Store Services",
:as => :check_boxes,
:collection => Service.all %>
<% end -%>
Контроллер использует унаследованные ресурсы, и действие редактирования неявно.
При редактировании @store со службами, уже связанными с ним, флажки для последних не отображаются как отмеченные.
README от Formtastic предупреждает, что официально он не поддерживает MongoMapper, но в нем также говорится, что люди успешно использовали оба вместе, и я видел несколько примеров этого онлайн.
Я подозреваю, что Inherited Resources также не поддерживает его, как я видел из Devise + Simple Form, как от одних и тех же авторов, так и от тех, которые не поддерживают MM. Они работают над использованием адаптера ORM в своих драгоценных камнях, но он еще не готов, AFAIK.
И у меня уже были проблемы с этим, я переопределяю действие обновления, чтобы заставить его работать:
def update
store = Store.find(params[:id])
if store.update_attributes!(params[:store])
flash[:notice] = 'Store was successfully updated.'
redirect_to admin_store_path(store)
else
redirect_to new_store_path
end
end
Кто-нибудь знает, где конфликт с MM, в Formtastic или IR, и взлом, чтобы проверить эти флажки?