未定义的方法在一对多模型关系中“同步”

时间:2013-10-20 21:20:31

标签: ruby-on-rails one-to-many

我在rails 4中有一个简单的1:n关系。主题和类别。主题确实有一个类别,类别有很多主题。

topic.rb

class Topic < ActiveRecord::Base

  belongs_to :category

end

category.rb

class Category < ActiveRecord::Base

  has_many :topics

end

我使用标准外键模式,因此我的主题模型具有属性

category_id

现在做一些标准的东西我有以下问题:

当我列出属于某个类别的所有主题时,这样可以正常工作:

<% @category.topics.each do |topic| %>
...
<% end %>

但这样做(只是显示属于该主题的类别的类别slug):

<%= @topic.category.slug %>

绘制此错误:

undefined method `synchronize' for nil:NilClass

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我认为您的错误来源实际上是您在获取类别slug时引用@topic,但是将变量topic传递到您的块中,因此@topic为零

答案 1 :(得分:0)

问题是friendly_id gem。 我不得不使用

gem 'friendly_id', '~> 5.0.0'

使用rails 4。

现在它完美无缺。 感谢https://github.com/norman/friendly_id#what-changed-in-version-50