Я рельсы и рубин нуб, и Im уверен, что это что-то совершенно глупо я пропускаю ..вложенных форм объекта
Попытки построить вложенную форму, и нашли много примеров в Интернете, и пытались и не для воспроизведения желаемого результата.
поля "продавец" даже не отображается, и когда я отправить форму я получаю:
Неизвестный атрибут: Пункт
модели:
class Dealerform < ActiveRecord::Base
belongs_to :dealer
has_one :seller :class_name => 'Seller'
has_many :items, :through => :seller
accepts_nested_attributes_for :seller, :items
end
class Seller < ActiveRecord::Base
belongs_to :dealerform
has_many :items :class_name => 'Item'
end
class Item < ActiveRecord::Base
belongs_to :seller
end
вид:
<% form_for(@dealerform) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :date %><br />
<%= f.datetime_select :date %>
</p>
#...more fields ...
<% f.fields_for :seller do |seller| %>
<p>
<%= seller.label :fname %><br />
<%= seller.text_field :fname %>
</p>
#...more fields ...
<% end %>
<% f.fields_for :item do |item| %>
<p>
<%= item.label :foo %><br />
<%= item.text_field :foo %>
</p>
#...more fields ...
<% end %>
<%= f.submit 'Create' %>
<% end %>
основе предложений .. изменил следующие строки:
<% f.fields_for :seller do |seller| %>
<% f.fields_for :item do |item| %>
в:
<% f.fields_for @seller do |seller| %>
<% f.fields_for @item do |item| %>
и теперь они появляются в форме, и при попытке отправить форму я получаю:
неизвестный атрибут: nil_class
при изменении:
def new
@dealerform = Dealerform.new
к:
def new
@dealerform = Dealerform.new
@dealerform.seller.build
я получаю:
неопределенный метод `сборки» для ноль: NilClass
Подсказки: Пожалуйста, не начинайте предложения с «так». Пожалуйста, начните приговоры с помощью Capital Letters. Процитируйте «Я». –
Напоминание - если вы работаете в Rails 3.0.0 или 2.3.9, убедитесь, что обновили его, так как существует уязвимость [http://weblog.rubyonrails.org/2010/10/15/security -vulnerability-in-embedded-attributes-code-in-ruby-on-rails-2-3-9-and-3-0-0) для 'accepts_nested_attributes_for'. – Matchu