Я использую Rails 3.1 и Ruby 1.9.2 вместе с Active Admin для создания CMS. Вот мои модели места и изображения:
class Place < ActiveRecord::Base
has_one :image
accepts_nested_attributes_for :image
end
class Image < ActiveRecord::Base
belongs_to :place
end
Вот форма Formtastic, которую я отображаю в своем "новом" действии в контроллере Places:
<%= semantic_form_for [:admin, @place] do |p| %>
<%= p.inputs "Details" do %>
<%= p.input :name %>
<%= p.input :description %>
<%= p.input :phone %>
<%= p.input :address %>
<%= p.input :image %>
<% end %>
<%= p.buttons %>
<% end %>
Когда я загружаю форму в браузере, я вижу следующую ошибку:
undefined method `place_id' for #<Place:0xb801744>
Вот кикер: в моей модели Place, если я изменю has_one :image
на has_many :images
и accepts_nested_attributes_for :image
на accepts_nested_attributes_for :images
, а в моей форме я изменю p.input :image
на p.input :images
, то ошибка исчезнет и Formtastic правильно отображает многоэлементный входной элемент, содержащий все доступные графические объекты. Итак, почему я получаю эту ошибку, когда я использую has_one
связь вместо того, чтобы видеть элемент ввода select?