【发布时间】:2014-08-12 15:34:42
【问题描述】:
我有 3 个模型:
空缺
has_many :address_vacancies
has_many :addresses, through: :address_vacancies
地址
has_many :address_vacancies
has_many :vacancies, through: :address_vacancies
地址空缺
belongs_to :address
belongs_to :vacancy
在我的表单中,我使用以下代码:
<%= f.collection_select :address_id, Address.order("CREATED_AT DESC"),:id,:title, include_blank: true %>
引发错误:undefined method address_id',这是为什么,我做错了什么?
编辑
完整的表格如下所示:
<%= form_for(@vacancy) do |f| %>
<% if @vacancy.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@vacancy.errors.count, "error") %> prohibited this vacancy from being saved:</h2>
<ul>
<% @vacancy.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :address %>
<%= f.collection_select :address, Address.order("CREATED_AT DESC"),:id,:title, include_blank: true %>
</div>
<div class="field">
<%= f.label :signup_until %><br>
<%= f.date_select :signup_until %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
【问题讨论】:
-
您能在控制台中运行 Vacany.attribute_names 吗?
-
你能显示更多的表单代码吗?另外,您能否确认您的
AddressVacancy模型有address_id列? -
@bratsche 是的,该模型确实有该列。
-
您显示的代码 sn-p(使用
:address_id)与您在完整表单源中显示的内容不匹配(使用:address)。哪个是抛出错误?他们似乎都不正确。@vacancies是否有自己的address属性?该协会将使@vacancies.addresses提供地址集合。除非Vacancy具有address属性,否则@vacancies.address(因此,:address)将无效。并且:address_id是AddressVacancy的属性,但不是Vacancy的属性。
标签: ruby-on-rails ruby associations has-and-belongs-to-many