我有一个名为设备的对象,它与客户相关联。一旦客户订购了设备,工厂就会将设备分配给客户,客户注册设备,设备与其他相关功能之间的通信就可以开始了。
当我通过以下方式向工厂管理员显示编辑页面时:
<%= form_for @device do |f| %>
<%= render 'fields', f: f %>
'customer' 字段本身在其自己的表中定义,正确显示为选择下拉列表。但是,该选择的默认值不是当前分配的客户,而只是列表中的当前客户。有没有办法使用上述默认渲染方案使选择下拉菜单使用设备的当前值?
我在这个主题上尝试了几种变体:
<%= form_for @device do |f| %>
<%= render 'fields', f: f %>
<%= f.select :customer, options_for_select(@customers.each{|p| [p.name, p.id]}, @device.customer.name)%>
但是这些方法只会导致一个巨大的下拉菜单运行整个屏幕宽度,即使这样,也不会显示适当的默认值。此外,f.select 只显示客户的对象 ID,而不是名称本身。