0

我有一个名为模型 “魔方”,它代表的交易卡的集合:的Rails:NameError未初始化的数据库关系不断

应用程序/模型/ cube.rb

class Cube < ApplicationRecord 
    has_many :cubecards 
    validates :name, length: { in: 3..30 } 
end 

正如你可以看到,该模型具有cube_cards一个的has_many关系:

应用程序/模型/ cube_card.rb

class CubeCard < ApplicationRecord 
    belongs_to :cube 
end 

虽然以下this rails guide求救创建此关系,代码引用这种形式风格:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %> 

出于测试目的,我只是希望人们能输入与该卡ID对应一个号码,所以我有以下形式:

应用/视图/模块/ show.html.erb

<%= 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 %> 

问题是,@cube.cubecards.build给我带来麻烦:rails为Cube::CubeCard抛出未初始化的常量错误。

在其他线程中,我注意到plurality已被a common issue,但我找不到任何这将是一个问题。

我也注意到,this fellow had a similar issue,但据我所知可以接受的解决方案不适用于我的代码和高度投票的解决方案是关于控制器。这里是我的魔方卡控制器:

应用程序/控制器/ cube_cards_controller.rb

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 

为了澄清一次,一个cube可以有许多cube_cards

我还试图改变所述多个的cubecardcubecards,加入下划线(cubecard - >cube_cardcube_cards),甚至资本cubecard - >CubeCardCubeCards无济于事。

我遵循的教程似乎直接跳到表单没有一个问题,所以我知道,作为一个新手,我必须犯一些基本错误,但我一直在努力现在没有明显的解决方案。

我在Windows 7计算机上本地运行此程序,计划在完成后将其迁移到Web主机。

如果有帮助,我已发布代码on github

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' 
+0

您的github仓库中的代码没有为Cube数据库迁移? –

+0

@StephanePaquet,我添加了文件并重新提交。我已经移动它以放下桌子。我一直在使用db:migrate删除cubecards表并重新添加它,并且我不希望从多维数据集迁移中得到任何东西以便顺利完成 –

+0

请发布实际错误。你只是展示你认为可能是错误的,而不是实际上错误的。如果两者相同,则不需要提问。 – jamesc

回答

0

我找到了解决这个问题。不幸的是,我遇到过很多与我之前曾经问过类似问题的人一样的问题:这里的问题源于我的变量命名不当。

我能够通过改变@cube.cubecards修复代码@cube.cube_cards

此外,在PARAMS,我改变:cubecard:cube_card

事实证明,我应该为所有cubecard唯一使用的时间一个词在每个文件开头的Class声明中。其他的东西都引用表cube_cards,因此应该用这种方式拼写。

相关问题