我有几个模型......用户模型,收集模型和灵感模型......
收集模型具有灵感
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
在问题发生的星星之间的灵感一词
欢呼,贾斯汀答案 0 :(得分:2)
由于收藏具有灵感,@collection.inspiration
会返回一个灵感对象,而不是灵感的集合(你必须称呼你的模型集,现在我是在喃喃自语:P)。而是做:
if @collection.inspiration
foobar foobar
end
你也不能做@inspiration = @collection.inspiration.new
因为灵感是零。而是做:
@inspiration = @collection.build_inspiration