我有一个非常简单的 Rails 应用程序,它收集“设备”并将其分配给“站点”
class CreateEquipment < ActiveRecord::Migration[5.0]
def change
create_table :equipment do |t|
t.string :site_name
t.string :equip_name
t.string :equip_model
t.string :equip_make
t.string :equip_type
t.belongs_to :site
t.timestamps
end
end
end
class CreateSites < ActiveRecord::Migration[5.0]
def change
create_table :sites do |t|
t.string :site_name
t.timestamps
end
end
end
两个模型“设备”和“站点”
class Equipment < ApplicationRecord
end
class Site < ApplicationRecord
has_many :equipment
end
我已经设置了设备 belongs_to 站点和站点 has_many 设备。
在我的设备表单中,我有一个 collection_select 来选择要分配设备的站点。
<div class="field">
<%= f.label :site_name %>
<%= f.collection_select :site_name, Site.all, :site_name, :site_name, prompt: true %>
</div>
<div class="field">
<%= f.label :equip_name %>
<%= f.text_field :equip_name %>
</div>
<div class="field">
<%= f.label :equip_model %>
<%= f.text_field :equip_model %>
</div>
<div class="field">
<%= f.label :equip_make %>
<%= f.text_field :equip_make %>
</div>
<div class="field">
<%= f.label :equip_type %>
<%= f.text_field :equip_type %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
而在现场展示页面上,我已经开始设置展示设备的页面了。
<p>
<strong>Sitename:</strong>
<%= @site.site_name %>
</p>
<% @site.equipment.each do |equipment| %>
<p><%= equipment.equip_name %></p>
<% end %>
但是当我打开站点显示页面时,我看不到任何设备。
我没有在表单或页面上遇到任何错误或问题,我已允许所有参数。我想我的 collection_select 设置可能不正确。
更新:观看 Michael Hartl 的 Ruby on Rails 教程第 14.1.2 节用户/关系关联并感受到一些启发,任何有此问题的人也应该了解一下。