如何在 Rails 中创建类别
Posted
技术标签:
【中文标题】如何在 Rails 中创建类别【英文标题】:How to create Categories in Rails 【发布时间】:2013-07-19 11:10:53 【问题描述】:我正在尝试将类别添加到我的 Rails 应用程序,但不太知道如何执行此操作。
我有很多 Pin 图(图片),并希望用户能够在这些 Pin 图上分配一个类别。 ASSIGN 不会创建、编辑或删除类别,只是为他们的 Pin 图选择一个。 这意味着,当用户上传 pin 时,他可以从下拉列表中选择一个类别。
然后,另一个用户可以从菜单中选择一个类别,并且只会列出该类别中的 Pin 图。
我该怎么做?从哪里开始?
谢谢
【问题讨论】:
【参考方案1】:首先,如果您不想在应用程序中管理类别,则只需在表格中添加类别字段并在应用程序中选择类别:
<%= f.select :category, [ 'Box', 'Cover', 'Poster' ], :prompt => 'Select One' %>
其次,如果您想管理应用程序中的类别,则必须为其维护单独的模型和表。因此,您可以从生成模型开始:
rails g model category
它将在您的应用程序目录中添加模型和迁移。向您的迁移添加内容:
class CreateCategories < ActiveRecord::Migration
def change
create_table :categories do |t|
t.string :name
t.text :description
## you can add more stuff as per your requirements
t.timestamps
end
end
end
在类别和 Pin 模型中定义关联为此添加验证:-
In Category Model:
has_many :pins
In Pin Model :
belongs_to :category
validates :category, presence: true
通过类别控制器和表单创建一些类别(我不认为,我需要告诉你那些东西,你可以自己做)
在您的 pin 上传表单中添加此选项:-
<%= f.select :category, Category.all, :prompt => "Select One" %>
希望,它会有所帮助。
【讨论】:
Rails Guy 你摇滚,非常感谢。但我有一个问题:我做了以上所有事情。现在,我创建一个类别控制器?那不会允许用户也创建类别吗?对不起,如果这个问题对你来说太幼稚了,我对 Rails 还很陌生。谢谢 是的,您可以添加、删除、编辑和删除您的类别。在控制器中添加方法,在视图中添加模板。现在你可以走了。如果你得到了你要找的东西,请接受答案。谢谢。 我认为你没有正确理解我的意思!我对 Rails 还很陌生,理解起来有些困难。对不起。现在,如果我创建一个控制器,用户就可以访问 site.com/categories 并创建类别。我不想要那个。我只想设置类别,用户应该只从列表中选择。 请分享您的 pin 表单查看代码。我将对其进行必要的更改。 我建议你两个选项,我想,你没有考虑我的第一个选项。在您的 pin 表中添加一列并在 pinname 输入上方的 /app/views/pins/_form.html.erb 模板中添加一个选项,并按照我的建议在您的选择中添加您的选项来代替“Box”、“Cover”等在第一个选项中: 'Select One' %> 不要按照我的回答中第二个选项的任何步骤,如果您这样做了,请还原该代码,因为您的应用程序中不需要类别管理。谢谢【参考方案2】:您可能想在您的 Category 模型上添加一个 def to_s
方法。我相信只要在f.select
选项上使用普通的Category.all
,它就会显示一些奇怪的内存地址代码。其他一切看起来都很棒!
【讨论】:
以上是关于如何在 Rails 中创建类别的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MongoDB 在 Prisma ORM 中创建类别及其子类别