【发布时间】:2017-12-02 03:19:47
【问题描述】:
我正在开发一个用于注册露营者的 Rails 应用程序。首先,您使用您的姓名、电子邮件等进行注册。制作个人资料后,您可以注册一个营地。如果营地尚未满员,那么您将立即注册。如果它已满,那么您将被列入候补名单。现在我有 4 个模型:营员(姓名、电子邮件等)、营员(姓名、位置等)、注册和候补名单。 这个想法是让一个露营者能够注册到许多营地,显然一个营地有许多露营者注册或候补名单。这是我的课程:
# camper.rb
has_many :enrolled_in, :class_name => 'Camps', through: :enrollments, dependent: :destroy
has_many :waitlisted_in, :class_name => 'Camps', through: :waitlists, dependent: :destroy
# camp.rb
has_many :enrolled_campers, :class_name => 'Camper', through: :enrollments
has_many :waitlisted_campers, :class_name => 'Camper', through: :waitlists
我无法通过视图访问这些模型。下面是 show.html.erb 的样子:
<!-- Listing camps -->
<h2>Camps</h2>
<p>
<strong>Name:</strong>
<%= @camper.enrolled_in.name %> <!-- This is where I get the error -->
</p>
<!-- Adding camps -->
<h2>Add a camp:</h2>
<%= form_with(model: [@camper, @camper.enrolled_in.build ]) do |form| %>
<p>
<%= form.label :name %><br>
<%= form.text_field :name %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
但我收到以下错误:
Campers#show 中的 ActiveRecord::HasManyThroughSourceAssociationNotFoundError
在模型注册中找不到源关联“enrolled_in”或 :enrolled_in。尝试 'has_many :enrolled_in, :through => :enrollments, :source => '。是camp还是camper之一?
老实说,我不知道出了什么问题。我对数据库和 Rails 还很陌生,所以请放轻松。
【问题讨论】:
标签: html ruby-on-rails database web-applications associations