我基于此http://railscasts.com/episodes/382-tagging对我的网站实施了标记
我想在我的房屋资源中添加标签,所以我得到这样的网址......
/houses/tag1 /houses/tag2 等
我的路线文件:
localized(['en', 'nl', 'de']) do
scope "/:locale" do
resources :houses do
collection do
get ':tag', to: 'houses#index', as: :tag
end
#...
end
end
end
房屋控制器
if params[:tag]
@houses = House.tagged_with(params[:tag])
@tag = Tag.find_by_name(params[:tag])
else
@houses = House.find.all
end
房屋模型(部分)
def self.tagged_with(name)
Tag.find_by_name!(name).houses
end
def self.tag_counts
Tag.select("tags.*, count(taggings.tag_id) as count").
joins(:taggings).group("taggings.tag_id")
end
def tag_list
tags.map(&:name).join(", ")
end
def tag_list=(names)
self.tags = names.split(",").map do |n|
Tag.where(name: n.strip).first_or_create!
end
end
这适用于房屋资源中的标签。但是当我通过示例房屋/房屋名称1转到房屋ID(显示方法)时,我收到一条错误消息
undefined method `houses' for nil:NilClass
house.rb:41:in `tagged_with'
我究竟做错了什么?
Ciao..remco