Ruby on rails 如何创建嵌套模型表单
我只是不确定如何构建嵌套表单。我关注过Ryan Railscasts,但我不确定如何在我的案例中创建新实例 我有以下型号Ruby on rails 如何创建嵌套模型表单,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Ruby On Rails 3.2,我只是不确定如何构建嵌套表单。我关注过Ryan Railscasts,但我不确定如何在我的案例中创建新实例 我有以下型号 Customer, Book Manager, and Book 他的关系也随之而来 Customer has_many :book_managers, :dependent => :destroy accepts_nested_attributes_for :book_managers Book belongs_to :book_manage
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 %>
他的形式如下
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 %>
我也尝试以下方法
@customer = Customer.find(params[:id])
@bookmanager = @customer.book_managers.build
它不起作用,也不确定如何建立关系。感谢您的帮助
这里是我在rails 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>
NoMethodError:未定义的方法“books”#
您应该使用has\u many:through:关系
class客户:销毁
有很多:书籍,:至=>:书籍管理者
接受书籍管理器的\u嵌套\u属性\u
结束
类BookManager:销毁
结束
类目
您可以阅读更多内容它是否在您的控制台上显示错误?现在显示错误。我将按照Railscasts教程更新显示错误的外观我不应该从customer->books添加关系。但其他许多人似乎都建议这样做。最好的方法是什么,我应该如何创建一个新项目。我对ruby是如何工作的感到非常困惑。如果你需要像这样的东西:
cust=Customer.find(1)
,cust.books
你需要在Customer
模型a中有很多:books
关系。这将解决我的控制台问题,但它并没有以一种形式解决图书和图书管理器的创建问题。我怎么能这样做?