我正在尝试制作一个collection_select
,我会从另一个模型中获取一个字段的值。我有以下2个型号:
Documents
:
class CreateDocuments < ActiveRecord::Migration[5.0]
def change
create_table :documents do |t|
t.string :etiquette_number
t.string :etiquette_type
t.boolean :important
t.string :work_text
t.integer :user_id
t.timestamps
end
end
end
Entries
:
class CreateEntries < ActiveRecord::Migration[5.0]
def change
create_table :entries do |t|
t.integer :document_id
t.integer :user_id
t.string :work
t.date :date
t.integer :time
t.timestamps
end
end
end
我想在document_id
(Entries
模型)中选择下拉列表,我可以在其中选择文档ID的值。
到目前为止,我得到了这个,但我不确定它是否是正确的方式
models/document.rb
class Document < ApplicationRecord
has_many :Entries
end
models/entry.rb
class Entry < ApplicationRecord
belongs_to :Documents
end
我真的希望有人可以帮助我,正如你在标题中看到的那样,我正在使用Rails 5。
答案 0 :(得分:3)
class Document < ApplicationRecord
has_many :entries
end
class Entry < ApplicationRecord
belongs_to :document
end
在您的视图文件中:new.html.erb
<%= f.select :document_id, Document.all.collect { |p| p.id }, include_blank: true %>
答案 1 :(得分:1)
您应该使用以下代码的关联
当您使用has_many
时,型号名称应为plural
class Document < ApplicationRecord
has_many :entries
end
当您使用belongs_to
时,型号名称应为singular
class Entry < ApplicationRecord
belongs_to :document
end
您可以在entry
内写下选择标记,如下所示
@documents = Document.all
<%= f.select :document_id, @documents.collect { |d| [ d.name, d.id ] }, include_blank: true %>
@documents是保险变量,包含所有文件。
由于
答案 2 :(得分:0)
您需要将文档范围限定为属于该条目的文档
JTabbedPane