Sto facendo un semplice esercizio con due modelli. Sport e team, definito comeRails - Visualizzazione di riferimenti a chiave esterna in un modulo
rails g scaffold sport name:integer rails g scaffold team name:integer fans:integer sport:references
(Nota: La ragione per cui sto usando impalcatura è la prototipazione rapida in modo da poter imparare/sperimentare con le parti che non sono a conoscenza ancora)
Il problema è che il mio "sport" (vale a dire il riferimento chiave esterna) sta mostrando come la seguente
Così è ottenuto che strano #<blahl blah>
la notazione ad esso ...
<%= form_for(@team) do |f| %>
<% if @team.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@team.errors.count, "error") %> prohibited this team from being saved:</h2>
<ul>
<% @team.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :fans %><br />
<%= f.number_field :fans %>
</div>
<div class="field">
<%= f.label :sport %><br />
<%= f.text_field :sport %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Ho provato a modificare una riga su @team.sport.name
ma si è verificato un errore undefined method 'Ice Hockey' for #<Team:0x3e7e040>
... Qualche idea su come visualizzare correttamente il nome da qui ??
Grazie @MrYoshiji . Sto tentando di avviare il tuo primo suggerimento e i valori appaiono correttamente nella casella di selezione. Comunque, sto cercando un 'ActiveModel :: MassAssignmentSecurity :: Error' quando provo a salvare, sta dicendo' Can not mass-assign attributes attributes: sport_id' – Ricky
L'ho fatto lavorando aggiungendo ': sport_id' al mio attr_accessors per the teams_controller. Era questo il modo corretto per farlo? Inoltre, ho provato il secondo metodo, e funziona, ma non capisco perché. Che cosa è "Sport.scoped"? Perché è richiesto solo nel metodo 'edit'? Esempio, anche il metodo 'new' condivide la stessa vista' _form.html.erb', ma non faccio una chiamata a '@sports = Sport.scoped' lì ma funziona ancora ... Grazie per qualsiasi intuizione – Ricky