Ich habe ein Modell namens "Würfel", die eine Sammlung von Sammelkarten dar:Rails: Nameerror nicht initialisierte Konstante auf Datenbank Beziehung
app/models/cube.rb
class Cube < ApplicationRecord
has_many :cubecards
validates :name, length: { in: 3..30 }
end
Wie Sie sehen kann, hat dieses Modell eine has_many Beziehung mit cube_cards:
app/models/cube_card.rb
class CubeCard < ApplicationRecord
belongs_to :cube
end
Während folgende this rails guide für Hilfe, um diese Beziehung zu schaffen, die Code-Referenzen dieser Form Stil:
<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>
Für Testzwecke, ich will nur Leute zur Eingabe einer Nummer, die mit der Karte ID entspricht, so hat ich die folgende Form:
app/views/Würfel/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 %>
Das Problem ist, @cube.cubecards.build
gibt mir Probleme: Schienen löst einen nicht initialisierten konstanten Fehler für Cube::CubeCard
.
In anderen Threads, habe ich festgestellt, dass pluralitya common issue gewesen ist, aber ich kann nichts finden, das hier ein Problem wäre.
Ich habe auch bemerkt, dass this fellow had a similar issue, aber soweit ich sagen kann die akzeptierte Lösung nicht auf meinen Code und die hoch bewerteten Lösungen sind über den Controller. Hier meine Würfel Karten-Controller ist:
app/controllers/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
Um zu klären, einmal mehr, kann ein cube
haben vielecube_cards
.
Ich habe auch versucht, die Vielzahl von cubecard
-cubecards
ändern, Hinzufügen des Unterstriches (cubecard
->cube_card
und cube_cards
), und auch die Kapitalisierung cubecard
->CubeCard
und CubeCards
ohne Erfolg.
Das Tutorial, das ich folge, scheint direkt auf das Formular zu überspringen, ohne ein einziges Problem, also weiß ich, dass ich als Neuling einen elementaren Fehler machen muss, aber ich arbeite seit ungefähr einem Tag jetzt ohne offensichtliche Lösung.
Ich führe dies lokal auf einem Windows 7-Rechner, mit den Plänen, es zu einem Web-Host zu migrieren, sobald abgeschlossen. Wenn es hilfreich ist, habe ich den Code on github gepostet.
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>
Auch spuckt meine Konsole die folgende Fehlermeldung aus:
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'
Der Code in Ihrem Github Repo hat keine Migration für die Cube-Datenbank? –
@StephanePaquet, habe ich die Datei zurück und erneut eingefügt. Ich hatte es bewegt, um den Tisch fallen zu lassen. Ich hatte db: migrate verwendet, um die Cubecards-Tabelle zu löschen und sie erneut hinzuzufügen, und ich wollte nicht, dass irgendetwas von der Cube-Migration in den Weg kam. –
Bitte den aktuellen Fehler posten. Sie zeigen nur, was Sie für falsch halten, anstatt was eigentlich falsch ist. Wenn die beiden gleich wären, müssten Sie die Frage nicht stellen. – jamesc