【发布时间】:2011-10-25 06:35:22
【问题描述】:
我正在用 Rails 编写一个博客引擎,并设置了一个标签模型和一个帖子模型,它们具有 have_and_belongs_to_many 关系。标签添加工作正常,当查找具有特定标签的所有帖子时出现问题:
如果我将标签“test”添加到帖子 A,然后将标签“test”添加到帖子 B,则有两个标签对象,名称均为“test”,但 ID 不同,都引用了不同的帖子。现在,如果我有一个控制器操作 indexTagPosts ,它采用参数“tag”并找到所有带有该标签的帖子,它只会返回一个帖子,因为另一个标签具有不同的 ID 并且没有真正关联。我应该以某种方式限制新标签的添加,还是应该操纵以不同方式提取所有相关标签的方式?
这是控制器动作,它应该根据参数'tag'抓取所有相关帖子:
def indexTagPosts
@tag = Tag.find(params[:tag])
@posts = @tag.posts.all
end
这是保存标签的操作:
def create
@post = Post.find(params[:post_id])
@tag = @post.tags.create(params[:tag])
respond_to do |format|
if @tag.save
format.html { redirect_to edit_post_path(@post),:notice => "Success" }
end
end
end
提前致谢,并为冗余或措辞不当道歉。
【问题讨论】:
标签: ruby-on-rails tags has-and-belongs-to-many