Ruby on rails Rails:NameError数据库关系上未初始化的常量

Ruby on rails Rails:NameError数据库关系上未初始化的常量,ruby-on-rails,one-to-many,nameerror,uninitialized-constant,Ruby On Rails,One To Many,Nameerror,Uninitialized Constant,我有一个名为“立方体”的模型,它代表一组交易卡: app/models/cube.rb class Cube < ApplicationRecord has_many :cubecards validates :name, length: { in: 3..30 } end class CubeCard < ApplicationRecord belongs_to :cube end <%= form_with(model: [ @cube, @cube.cub

我有一个名为“立方体”的模型,它代表一组交易卡:

app/models/cube.rb

class Cube < ApplicationRecord
  has_many :cubecards
  validates :name, length: { in: 3..30 }
end
class CubeCard < ApplicationRecord
  belongs_to :cube
end
<%= form_with(model: [ @cube, @cube.cubecards.build ], local: true) do |form| %>
  <p>
    <%= number_field(:card, :id, in: 1.0..8000.0, step: 1) %>
  </p>
  <p>
    <%= form.submit %>
  </p>
<% end %>
class CubeCardsController < ApplicationController
  def create
    @cube = Cube.find(params[:cube_id])
    @cubecard = @cube.cubecards.create(cubecard_params)
    redirect_to cube_path(@cube)
  end

  private
    def cubecard_params
      params.require(:cubecard).permit(:card)
    end
end
为了再次澄清,一个
多维数据集可以有多个
多维数据集卡

我还尝试将多个
cubecard
更改为
cubecard
,添加下划线(
cubecard
->
cubecard
cubecard
),甚至连大小写
cubecard
cubecard
都没有用

我下面的教程似乎没有一个问题就直接跳到了表单上,所以我知道,作为一个新手,我一定犯了一些基本的错误,但我已经工作了大约一天,没有明显的解决方案

我在Windows7机器上本地运行这个,并计划在完成后将其迁移到web主机

如果有用的话,我已经发布了代码

name多维数据集中出现错误#显示
显示C:/Sites/pokecube/app/views/cubes/show.html.erb,其中第25行出现:
未初始化的常量多维数据集::Cubecard
提取的源(第25行附近):

添加卡:

此外,我的控制台还显示以下错误:

Completed 500 Internal Server Error in 69ms (ActiveRecord: 1.0ms)

ActionView::Template::Error (uninitialized constant Cube::Cubecard):
22:
23: <p>
24:   Add a Card:
25:   <%= form_with(model: [ @cube, @cube.cubecards.build ], local: true) do |form| %>
26:   <p>
27:     <%= number_field(:card, :id, in: 1.0..8000.0, step: 1) %>
28:   </p>

app/views/cubes/show.html.erb:25:in `_app_views_cubes_show_html_erb___540381856_44810532'
在69毫秒内完成500个内部服务器错误(ActiveRecord:1.0毫秒)
ActionView::Template::Error(未初始化的常量多维数据集::Cubecard):
22:
23:
24:添加卡:
25:   
26:
27:     
28:

app/views/cubes/show.html.erb:25:in`_app\u views\u cubes\u show\u html\u erb\u 540381856\u 44810532'
我找到了这个问题的解决方案。不幸的是,我陷入了许多与我之前问过类似问题的人相同的陷阱:这里的问题源于我的变量命名不当

我可以通过将
@cube.cubecards
更改为
@cube.cube\u卡来修复代码

此外,在参数中,我将
:cubecard
更改为
:cube\u card


事实证明,我唯一一次应该使用cubecard,因为所有一个单词都在每个文件开头的
声明中。其他所有内容都引用了表
cube\u cards
,因此应该以这种方式准确拼写。

我找到了解决此问题的方法。不幸的是,我陷入了许多与我之前问过类似问题的人相同的陷阱:这里的问题源于我的变量命名不当

我可以通过将
@cube.cubecards
更改为
@cube.cube\u卡来修复代码

此外,在参数中,我将
:cubecard
更改为
:cube\u card


事实证明,我唯一一次应该使用cubecard,因为所有一个单词都在每个文件开头的
声明中。其他所有内容都引用了表
cube\u cards
,因此应该以这种方式拼写。

github repo中的代码没有迁移到多维数据集数据库?@StephanePaquet,我将文件添加回并重新提交。我移动它是为了把桌子放下。我一直在使用db:migrate删除cubecards表并重新添加它,我不想从多维数据集迁移中得到任何东西来阻止实际错误的发生。你只是在展示你认为可能错的东西,而不是实际错的东西。如果两者是相同的,你就不需要问这个问题。@jamesc我很抱歉没有把它放在第一位。你确实提出了一个令人信服的观点。我已经编辑了包含所有错误信息的原始帖子。github repo中的代码没有对多维数据集数据库进行迁移?@StephanePaquet,我将文件添加回并重新提交。我移动它是为了把桌子放下。我一直在使用db:migrate删除cubecards表并重新添加它,我不想从多维数据集迁移中得到任何东西来阻止实际错误的发生。你只是在展示你认为可能错的东西,而不是实际错的东西。如果两者是相同的,你就不需要问这个问题。@jamesc我很抱歉没有把它放在第一位。你确实提出了一个令人信服的观点。我已经用所有错误信息编辑了原始帖子。
NameError in Cubes#show

Showing C:/Sites/pokecube/app/views/cubes/show.html.erb where line #25 raised:

uninitialized constant Cube::Cubecard

Extracted source (around line #25):

<p>
  Add a Card:
  <%= form_with(model: [ @cube, @cube.cubecards.build ], local: true) do |form| %>
  <p>
    <%= number_field(:card, :id, in: 1.0..8000.0, step: 1) %>
  </p>
Completed 500 Internal Server Error in 69ms (ActiveRecord: 1.0ms)

ActionView::Template::Error (uninitialized constant Cube::Cubecard):
22:
23: <p>
24:   Add a Card:
25:   <%= form_with(model: [ @cube, @cube.cubecards.build ], local: true) do |form| %>
26:   <p>
27:     <%= number_field(:card, :id, in: 1.0..8000.0, step: 1) %>
28:   </p>

app/views/cubes/show.html.erb:25:in `_app_views_cubes_show_html_erb___540381856_44810532'