Wykonuję proste ćwiczenie z dwoma modelami. Sport i zespołów, zdefiniowana jakoSzyny - Wyświetlanie informacji o kluczach obcych w formularzu
rails g scaffold sport name:integer rails g scaffold team name:integer fans:integer sport:references
(Uwaga: Przyczyną Używam rusztowanie szybko prototypów więc mogę się nauczyć/eksperyment z częściami nie jestem zaznajomiony z jeszcze)
Problem jest to, że mój „sport” (czyli referencji klucza obcego) pokazuje jak na poniższym
Więc to musi to dziwne #<blahl blah>
notacja do niego ...
<%= 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 %>
Próbowałem zmienić jedną linię na @team.sport.name
, ale powoduje błąd undefined method 'Ice Hockey' for #<Team:0x3e7e040>
... Wszelkie pomysły, jak poprawnie wyświetlić nazwę stąd?
Dzięki @MrYoshiji . Próbuję twojej pierwszej sugestii, aby zacząć, a wartości poprawnie pojawią się w polu wyboru. Jednak podczas próby zapisu otrzymuję komunikat "ActiveModel :: MassAssignmentSecurity :: Error", który mówi: "Nie można masowo przypisywać chronionych atrybutów: sport_id' – Ricky
Mam to działa, dodając': sport_id' do moich attr_accessors for the team_controller. Czy to był właściwy sposób? Próbowałem też drugiej metody i działa, ale nie rozumiem dlaczego. Czym zajmuje się "Sport.scoped"? Dlaczego jest to wymagane tylko w metodzie 'edit'? Przykład: metoda 'new' również udostępnia ten sam widok' _form.html.erb', ale nie dzwonię do '@sports = Sport.scoped', ale nadal działa ... Dzięki za wszelkie informacje – Ricky