Tôi đang thực hiện một bài tập đơn giản với hai mô hình. Thể thao và Đội, được định nghĩa nhưĐường ray - Hiển thị Tham chiếu Khóa Ngoài ở dạng
rails g scaffold sport name:integer rails g scaffold team name:integer fans:integer sport:references
(Lưu ý: Lý do tôi đang sử dụng giàn giáo đang nhanh chóng prototyping vì vậy tôi có thể học hỏi/thí nghiệm với các bộ phận Tôi không quen thuộc với chưa)
Vấn đề là của tôi "thể thao" (tức là tài liệu tham khảo chính nước ngoài) được thể hiện như sau
Vì vậy, nó có mà lạ #<blahl blah>
ký hiệu để nó ...
<%= 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 %>
Tôi đã thử thay đổi một dòng thành @team.sport.name
nhưng kết quả là lỗi undefined method 'Ice Hockey' for #<Team:0x3e7e040>
... Bất kỳ ý tưởng nào về cách hiển thị tên đúng cách từ đây ??
Cảm ơn @MrYoshiji . Tôi đang cố gắng đề xuất đầu tiên của bạn để bắt đầu và các giá trị xuất hiện chính xác trong hộp chọn. Tuy nhiên, tôi nhận được một 'ActiveModel :: MassAssignmentSecurity :: Error' khi cố gắng lưu, nó nói 'Không thể gán hàng loạt thuộc tính được bảo vệ: sport_id' – Ricky
Tôi nhận nó hoạt động bằng cách thêm': sport_id' vào attr_accessors của tôi cho các teams_controller. Đây có phải là cách chính xác để làm điều đó không? Ngoài ra, tôi đã thử phương pháp thứ 2, và nó hoạt động, nhưng tôi không hiểu tại sao. 'Sport.scoped' là gì? Tại sao nó chỉ yêu cầu trong phương thức 'edit'? Ví dụ, phương thức 'new' cũng chia sẻ cùng một khung nhìn' _form.html.erb', nhưng tôi không gọi hàm '@sports = Sport.scoped' ở đó nhưng nó vẫn hoạt động ... – Ricky