【发布时间】:2013-09-03 15:01:35
【问题描述】:
我目前正在为模型构建表单,但在开发表单的关联模型表单时遇到问题。
我收到的错误:
undefined method `tradie_id' for #<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_TradieCategory:0xd0f9d78>
表单代码如下:
= form_for @data[:tradie], url: { action: "update_tradie" } do |tradie|
# This doesn't work
= tradie.fields_for :tradie_categories, @data[:tradie].tradie_categories do |category|
= category.text_field :tradie_id
# However this fields_for does
= tradie.fields_for :tradie_locations, @data[:tradie].tradie_locations do |location|
= location.text_field :address
Tradie 模型与TradieCategory 模型具有has_many 关系,TradieCategory 模型与Tradie 具有belongs_to 关系。我还验证了TradieCategory 有一个字段tradie_id。
在上面的表格中,@data[:tradie] 等于 Tradie 模型的实例。每当我调用tradie_categories 或tradie_locations 时,他们都会调用TradieCategory 和TradieLocation 的关联模型数据。
最后,在我的视图代码中,如果我运行= @data[:tradie].tradie_categories.to_a,我会在我的html页面上返回
[#<TradieCategory id: 2, tradie_id: 2, category_id: 1, created_at: "2013-09-08 19:50:10", updated_at: "2013-09-08 19:50:10">]
我不知道这有什么问题。有什么问题,我该如何解决?
【问题讨论】:
-
我想如果你用括号你会明白这里发生了什么
- tradie.fields_for(:tradie_categories, @data[:tradie].tradie_categories) do |category| -
我了解参数的情况。由于某种原因,我不知道它不起作用。以同样的形式,我还有另一个
fields_for,效果很好。 -
哦,来吧。您收到错误,即在收集时调用了一个方法(应该是 AR 方法)。你能出示其他表格吗?
-
更新了问题中的代码。
-
.tradie_categories和.tradie_locations的定义是什么?请给代码!
标签: ruby-on-rails forms associations ruby-on-rails-4 fields-for