我有一个名为“立方体”的模型,它代表一组交易卡:
应用程序/模型/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
在遵循此 Rails 指南以帮助创建此关系时,代码引用了此表单样式:
<%= 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
.
在其他线程中,我注意到复数是一个常见问题,但我在这里找不到任何问题。
我也注意到这个家伙也有类似的问题,但据我所知,接受的解决方案不适用于我的代码,而且投票率高的解决方案是关于控制器的。这是我的立方体卡控制器:
应用程序/控制器/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
再次澄清, acube
可以有很多 cube_cards
.
我还尝试将复数更改cubecard
为cubecards
,添加下划线(cubecard
->cube_card
和cube_cards
),甚至大写cubecard
->CubeCard
并CubeCards
无济于事。
我正在关注的教程似乎直接跳到表单没有一个问题,所以我知道,作为一个新手,我一定犯了一些基本错误,但我已经工作了大约一天,没有明显的解决方案。
我在 Windows 7 机器上本地运行它,并计划在完成后将其迁移到 Web 主机。
如果有帮助,我已经在 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'