1

我有一个关于如何从数据库中提取列表的问题。我使用 sqlite 进行开发,使用 postgres 进行生产(我知道我也需要在开发中使用 pg - 它在列表中):) 我也在使用 simple_form。

我的应用程序可以在这里看到:majorfinder.com,我正在研究专业部分。对于每个主要的展示页面,我都有一些想要展示的列表。

我有需要从数据库输出到无序列表的信息。无序列表是该专业的典型专业课程,它看起来像这样(例如,如果您正在查看的专业是语言学):

<ul>
  <li>Phonetics and Phonology</li>
  <li>Syntax</li>
  <li>Semantics and Pragmatics</li>
  <li>Language in Society</li>
</ul>

每个专业的课程将因每个专业而异,因此将是我需要放入数据库中的信息。您如何建议我将这些信息存储在数据库中,然后如何将其检索到我的视图中?列表项的数量可能会有所不同,但差别不大 - 有时可能有 2 个列表项,有时可能有 5 个。


更新:将课程放在一个表中,每个课程都与特定的专业相关。关系将如下所示:

少校.rb

has_many :major_classes

专业类.rb

属于_to :major

major_class 模式如下所示:

create_table "major_classes", :force => true do |t|
  t.datetime "created_at"
  t.datetime "updated_at"
  t.integer  "major_id"
  t.text     "class_name", :unique => true, :null => false
end

在我的控制器中,我会这样做:

@major_class = MajorClass.includes(:major)

我是 Rails 新手,我不确定如何将其纳入我的视野。你能帮忙吗?

你会这样做吗?或者你会对此做出任何改变吗?谢谢!!

4

2 回答 2

1

列出模型

 list_id | list_name                  | child_of
    ------------------------------------------------
    1       | Linguistics                | 0
    2       | Phonetics and Phonology    | 1
    3       | Syntax                     | 1
    4       | Semantics and Pragmatics   | 1
    5       | Language in Society        | 1
    6       | Arts                       | 0
    7       | Music                      | 6
    8       | Dance                      | 6
    9       | Drama                      | 6

控制器

@list = Lists.where(:child_of => Lists.find_by_list_name("Linguistics").list_id)

看法

<ul>

@list.each do |i|

  <li><%= i.list_name %></li>

end

</ul>

尽管 Rails 迁移方法很复杂,但没有什么比老式的 mysql create table 语句更好的了。如果我不使用创建表,那么我不使用数据库。

迁移文件.rb

class CreateLists < ActiveRecord::Migration
  def up
        execute "DROP TABLE IF EXISTS lists"
        execute <<-SQL
        CREATE TABLE IF NOT EXISTS lists (
                list_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
                list_name VARCHAR(255) NOT NULL,
                child_of INT(11) NOT NULL
                created_at DATETIME NOT NULL,
                updated_at DATETIME DEFAULT NULL,
                PRIMARY KEY (list_id),
                UNIQUE(list_name)
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
        SQL
  end
  def down
        execute "DROP TABLE lists"
  end
end
于 2013-03-12T07:46:40.177 回答
-1

静态数据可以创建为资源类:

rails g model Degree name

并且可以填充到db/seed.rb文件中。

运行迁移并seed.rb更新文件后,您可以使用将记录添加到表中

rake db:seed

在要使用这些值的控制器操作中,添加:

@degrees = Degree.all

并将@degrees包括所有记录。

于 2013-03-10T07:15:25.117 回答