为每个数组项创建新对象

问题描述 投票:0回答:1

错误:

未定义的方法

'sub_agriculture_sub_agriculture_sub_agriculture_sub_agriculture_sub_agriculture_sub_agricultures_path'为#

context

我正在建立学生评分系统,目前遇到资源问题(我认为)关系定义如下

Scorecard.rb
..
 has_one :sub_agriculture

sub_agriculture.rb
..
 belongs_to :scorecard

routes.rb
..
 resources :scorecards
 resources :sub_agricultures

通常在sub_agricultures_controller.rb中使用;

def new     
  @sub_agriculture =  SubAgriculture.new
end

...因为这导致

#<SubAgriculture id: nil, score: nil, created_at: nil, updated_at: nil, scorecard_id: nil> 

我需要在一个条目表中为它们各自的记分卡创建其中几个。

但是仅选择scorecards附加了sub_agriculture。 (并非所有的atudent都以农业为主题)。因此,我在Scorecard所在的pluck(:id)上运行了一个查询,因为我认为使用整个active_record关系效率不高。然后,我得到这样的id数组; [1, 2, 3, 4, 5, 6]。这是查询中的Scorecard_id的集合。

因此,每个ID;我需要为其创建一个sub_agriculture得分。对于这种情况;六个新的次农业实例。为此,我在sub_agricultures_controller.rb

上执行了此操作
def new    
    sc = Scorecard.scorecard_with_agriculture
  @sub_agriculture =  sc.map { |s|SubAgriculture.new(:scorecard_id => s) }

end

这会把这个数组吐出来;

=>[#<SubAgriculture id: nil, score: nil, created_at: nil, updated_at: nil, scorecard_id: 1>, #<SubAgriculture id: nil, score: nil, created_at: nil
, updated_at: nil, scorecard_id: 2>, #<SubAgriculture id: nil, score: nil, created_at: nil, updated_at: nil, scorecard_id: 3>, #<SubAgriculture id:
 nil, score: nil, created_at: nil, updated_at: nil, scorecard_id: 4>, #<SubAgriculture id: nil, score: nil, created_at: nil, updated_at: nil, score
card_id: 5>, #<SubAgriculture id: nil, score: nil, created_at: nil, updated_at: nil, scorecard_id: 6>]

我想到的是什么; /sub_agriculture/new操作使我遇到此错误

SubAgricultures#new中的NoMethodError#>

未定义的方法sub_agriculture_sub_agriculture_sub_agriculture_sub_agriculture_sub_agriculture_sub_agricultures_path'对于#

以新形式突出显示此特定行

<%= form_with(model: sub_agriculture, local: true) do |form| %>

我需要以一种形式创建六个亚农业。我要去哪里错了?

错误:#的未定义方法'sub_agriculture_sub_agriculture_sub_agriculture_sub_agriculture_sub_agriculture_sub_agricultures_path'>]

ruby-on-rails ruby ruby-on-rails-5
1个回答
0
投票

我认为您不应该为此使用“新”操作,因为您会摆脱常规和束缚,除非发生某些事情。我将创建两个新操作:bulk_newbulk_create

为这些操作添加路线:

© www.soinside.com 2019 - 2024. All rights reserved.