0

我有几个模型……用户模型、收藏模型和灵感模型……

收藏模型 has_one 灵感

has_one :inspiration, :dependent => :destroy
belongs_to :user

灵感模型属于一个系列

belongs_to :collection
belongs_to :user

这是我的路线

resources :collections do
  resources :inspiration
end

这是我的 InspirationController(它不是复数)

def index
  @collection = Collection.find(params[:collection_id])
  @inspiration = @collection.inspiration
end

def new
  if signed_in? && current_user == @collection.user
    @user = current_user
    @collection = @user.collections.find(params[:collection_id])
    @inspiration = @collection.inspiration.new
  elsif signed_in? && current_user != @collection.user
    flash[:error] = "That's not your collection."
    redirect_to root_url
  else
    flash[:error] = "Please sign in."
    redirect_to login_url
  end
end

我对灵感的看法也是单一的(不是灵感)

在我一直使用 Rails 的所有时间里,我都没有使用 has_one 关联,但现在我遇到了一些错误......

当我查看页面时,我要么得到两个错误之一......

一个是未定义的灵感方法,它来自 InspirationController 中每个操作的第二行......另一个说的是未定义的方法 COUNT,因为我在视图中有一个 if 语句

if @collection.inspiration.count > 0 
   foobar foobar
end 

在 Rails 控制台中,当我尝试查找特定集合的灵感计数时,我可以看到它甚至没有执行正确的查询....

任何人都可以对这个问题有所了解或指出一个很好的资源来阅读这种类型的关联......提前谢谢你

需要指出的一件事与我通常对 has_many 关联所做的不同... 1. 在包括路线、视图和控制器在内的很多地方,我使用单数“灵感”代替复数“灵感”。

这是 尝试创建新灵感时的编辑,我收到以下错误

undefined method `inspiration'

指向新动作

@user = current_user
@collection = @user.collections.find(params[:collection_id])
@inspiration = @collection.**inspiration**.new

出现问题的星星之间的灵感一词

干杯,贾斯汀

4

1 回答 1

2

由于 collection has_one 灵感,@collection.inspiration返回一个灵感对象,而不是灵感的集合(你是否必须调用你的模型集合,现在我在喃喃自语:P)。而是这样做:

if @collection.inspiration
  foobar foobar
end

你也不能这样做@inspiration = @collection.inspiration.new,因为灵感是零。而是这样做:

@inspiration = @collection.build_inspiration
于 2013-09-19T19:24:01.413 回答