如何在 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 中创建类别的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ruby​​ on rails 4 中创建高级搜索

如何在 Rails 中创建通知系统?

如何使用 MongoDB 在 Prisma ORM 中创建类别及其子类别

如何在rails的同一个表中创建多对多

如何在类别中创建 UITableViewCell 明智地排列 JSON 对象

如何在 Xcode 7.2 中创建类别? [复制]