0

ネストされたフォームを作成する方法がわかりません。Ryan Railscasts をフォローしましたが、私の場合、新しいインスタンスを作成する方法がわかりません。

私は次のモデルを持っています

Customer,
Book Manager, and
Book

彼が従う関係

Customer
    has_many :book_managers, :dependent => :destroy
    accepts_nested_attributes_for :book_managers
Book
    belongs_to :book_manager
    def customer
        book_manager.customer
    end
Book_Manager
    belongs_to :customer
    has_many :books, :dependent => :destroy

彼が持っているフォームは次のとおりです

<%= form_for @bookmanager do |f| %>
  <%= f.fields_for :books, Book.new do |builder| %>
  <div>
    <%= builder.label :description %><br />
    <%= builder.text_area :description, :rows => 3 %>
  </div>
  <% end %>
  <div class="field">  
    <%= f.label :visible %><br />  
    <%= f.text_field :visible %>  
  </div>  
  <div class="actions">
    <%= f.submit %>
  </div>  
<% end %> 

彼が単一のフォームで新しいインスタンスを作成するのを混乱させた部分。book に属する説明があり、 book_managers に属する isVisible があります

ここで私は考えていますが、機能していないようです

@customer = Customer.find(params[:id])
@bookmanager = BookManager.new(params[:bookmanager])
@book = Book.new(params[:book])

私も次のことを試します

@customer = Customer.find(params[:id])
@bookmanager = @customer.book_managers.build 

それは機能せず、関係を作成する方法がわかりません。それについての助けをいただければ幸いです!

ここで私がしたクエリはレールcで

cust = Customer.first
cust.book_managers.build :visible => true
cust.book_managers.first.books.build :description => 'the odyssey'
cust.save!

大丈夫そうなので、確認するために次のことを行いました

cust = Customer.find 1
cust.books              ### This is where the error was given to me
Book.first.customer

エラーは

NoMethodError: undefined method `books' for #<Customer:0xad55afc>
4

1 に答える 1

1

has_many: through: 関係を使用する必要があります

class Customer < ActiveRecord::Base
  has_many :book_managers, :dependent => :destroy
  has_many :books, :through => :book_managers
  accepts_nested_attributes_for :book_managers
end

class BookManager < ActiveRecord::Base
  belongs_to :customer
  has_many :books, :dependent => :destroy
end

class Book < ActiveRecord::Base
  has_many :book_manager
  def customer
    book_manager.customer
  end
end

詳細を読むことができますhttp://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many

于 2013-02-21T05:22:55.867 に答える