SORU
2 ŞUBAT 2010, Salı


Katılmak modeli öznitelikleri düzenlemek için nasıl has_many :ile, ile iç içe form raylar?

Nasıl bir özniteliklerini accepts_nested_attributes_for kullanırken model katılın düzenlemek musunuz?

3 model var: Konular ve Makaleler Bağlayıcılar ile katıldı

class Topic < ActiveRecord::Base
  has_many :linkers
  has_many :articles, :through => :linkers, :foreign_key => :article_id
  accepts_nested_attributes_for :articles
end
class Article < ActiveRecord::Base
  has_many :linkers
  has_many :topics, :through => :linkers, :foreign_key => :topic_id
end
class Linker < ActiveRecord::Base
  #this is the join model, has extra attributes like "relevance"
  belongs_to :topic
  belongs_to :article
end

Ben makale oluşturmak, yani "yeni" konular eylem denetleyicisi...

@topic.articles.build

...ve konuları iç içe form yapmak/yeni.html.erb...

<% form_for(@topic) do |topic_form| %>
  ...fields...
  <% topic_form.fields_for :articles do |article_form| %>
    ...fields...

...Raylar otomatik olarak büyük olan linker oluşturur. Sorumu şimdi:Linker benim de model ile değiştirmek mümkün olmak istiyorum öznitelikleri "yeni konu" şeklinde. Ama Raylar otomatik olarak oluşturur linker aktarıldı ve article_id dışındaki tüm niteliklerinden ötürü sıfır değerleri vardır. Nasıl "Yeni Konu nil gelmiyorlar?" şeklinde içine diğer bağlayıcı nitelikler alanları koyabilir miyim

CEVAP
17 ŞUBAT 2010, ÇARŞAMBA


Cevabı buldum. Hile:

@topic.linkers.build.build_article

Bu bağlayıcı kurar, her linker için madde oluşturur. Bu yüzden, modeller:
konu.rb accepts_nested_attributes_for :linkers ihtiyacı var
linker.rb accepts_nested_attributes_for :article ihtiyacı var

Şeklinde sonra:

<%= form_for(@topic) do |topic_form| %>
  ...fields...
  <%= topic_form.fields_for :linkers do |linker_form| %>
    ...linker fields...
    <%= linker_form.fields_for :article do |article_form| %>
      ...article fields...

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • JorteexHD

    JorteexHD

    20 NİSAN 2012
  • Pocketnow

    Pocketnow

    14 EKİM 2007
  • Schmittastic Jr.

    Schmittastic

    19 Mart 2013