关于ROR中嵌套属性的访问

时间:2012-06-07 11:39:21

标签: ruby-on-rails

嗨,如果有人可以plz给出我得到的以下错误的解决方案。

我有两个模型PackageDeals和PackageDetails

在PackageDeals模型中,我有以下代码: - has_many :package_details has_many :image_sets accepts_nested_attributes_for :package_details

在PackageDetails模型中,我有:

    belongs_to :package_deals
accepts_nested_attributes_for :package_deals

现在在控制器中:

def new 
        @packages=PackageDeals.new(params[:package_deals])
                    @packages.package_details.build

现在我正在使用:

      <td><%= r.text_field :name, :class => 'space_bottom quote_request_form',:size=>17 %></td></tr>
        <tr><td><%= r.fields_for :package_details do |f| %></td></tr>

        some codes

        <%end%>
  <tr>
    <td><%= r.submit 'Create', :class => 'space_top' %></td></tr></table>
  <% end %>

现在,我在点击视图中的新链接时收到此错误:

未初始化的常量PackageDeals :: PackageDetail

任何解决方案请................

1 个答案:

答案 0 :(得分:1)

检查模型和关联名称的拼写:

默认情况下,Rails在模型名称中使用单数形式 has_one belongs_to 关联名称(例如PackageDeal和{{1 has_many 关联名称中的复数(例如belongs_to :package_deal)。更多信息:http://itsignals.cascadia.com.au/?p=7

你可以打破命名约定,但是你需要关联的额外参数。所以除非你有充分的理由不这样做,否则建议坚持默认值。有关这些额外参数的更多信息:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to