Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 向帖子添加类别的最佳方式是什么-RubyonRails博客_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 向帖子添加类别的最佳方式是什么-RubyonRails博客

Ruby on rails 向帖子添加类别的最佳方式是什么-RubyonRails博客,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是Ruby和Rails的新手,所以请容忍我。我已经创建了一个非常简单的博客应用程序,包含帖子和评论。一切都很好。我的下一个问题是关于添加类别。我想知道做这件事的最好方法。当谈到Rails时,我还看不太远,所以我想我会问 要明确的是,我希望一个帖子可以有多个类别,一个类别可以有多个帖子 创建一个“类别”表,然后使用posts和categories模型执行has_many:posts,has_many:categories?然后我是否还会设置routes.rb,以便将帖子嵌入到类别下 或者有没有一

我是Ruby和Rails的新手,所以请容忍我。我已经创建了一个非常简单的博客应用程序,包含帖子和评论。一切都很好。我的下一个问题是关于添加类别。我想知道做这件事的最好方法。当谈到Rails时,我还看不太远,所以我想我会问

要明确的是,我希望一个帖子可以有多个类别,一个类别可以有多个帖子

创建一个“类别”表,然后使用posts和categories模型执行
has_many:posts
has_many:categories
?然后我是否还会设置
routes.rb
,以便将帖子嵌入到类别下


或者有没有一种更简单的方法,只需在现有的posts表中添加一个category列?(在这种情况下,我会想象拥有多个类别会很困难)

既然你想在类别和帖子之间建立多对多的关系,我会(而且确实会)使用一个标签插件,比如,你可以定义什么是“标签”,并称之为“类别”。简单而有效。在您的表单中,您可以使用白名单(如“编码”、“食谱”、“假期”)来限制不同类别的“标签”的可能值。

这取决于您愿意投入多少精力-您可以使用标签插件,或者在帖子和类别模型中设置一个
has\u和\u归属\u many
关系,但是我推荐一些不同的东西

如果您创建第三个模型“分类”,作为帖子和类别之间的“粘合剂”,您可以拥有更多的控制权。Post
有很多:类别:通过=>categorizations
和Category
有很多:Post:through=>:categorizations

这样做的一个好处是,类别不存储在代码中,而是存储在数据库中,因此添加/删除/编辑它们不需要修改任何源代码。如何设置路由完全取决于您-您可以让
/categories/:id
返回属于该类别的所有帖子的列表,或者使用一个或多个类别作为参数实现某种搜索表单

瑞安·贝茨(Ryan Bates)用几种不同的方法解释了这一切

我知道你提到你是RoR的新手,所以如果你想要的东西有点复杂,我道歉。正如我所说,插件可能最适合您的需要,但我发现,如果可能的话,自己编写插件总是很好的,另外还有更大的灵活性和可控制性:)