连接两个模型 belongs_to/has_many 并通过表单中的下拉菜单进行选择
Connecting two models belongs_to/has_many and selecting via dropdown in form
我是 rails 初学者,我面临一个基本问题。我找到了几个解决方案,但其中 none 完全描述了我的问题。
我有两个模型:Contact 和 Group
Group has_many :contacts
Contact belongs_to :group
(通过设计有第三个用户模型)
创建新联系人时,我希望用户能够通过 select 选项(如下拉字段)select 此联系人所属的组。
我添加了 :group_id 联系人索引 table:
class AddGroupIdToContacts < ActiveRecord::Migration
def change
add_column :contacts, :group_id, :integer
end
end
在 view/contacts/_form 中,我使用了 collection_select 选项来输出显示可用组的下拉字段:
<%= form_for(@contact) do |f| %>
<% if @contact.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@contact.errors.count, "error") %> prohibited this contact from being saved:</h2>
<ul>
<% @contact.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
...
<div class="field">
<%= f.label :group_id %><br>
<%= f.collection_select(:group_id, Group.all, :id, :name) %>
</div>
...
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我可以成功输入新的联系人,但是在控制台中检查时我有一个空的 group_id: nil 字段。
将 selected 组的 ID 输入到 group_id 字段的正确方法是什么?如何显示此条目(最好使用组 ID 的名称) show.html.erb?
我知道这是一个基本问题,但我对 rails 还是很陌生。感谢您的帮助!
<%= f.select :group_id, options_from_collection_for_select(Group.all, , 'id', 'name') %>
这对你有帮助。
我试过上面的代码,它工作正常。我可以保存与 group_id 的联系,而无需更改您的代码。请再次检查。你在控制器的参数中得到 group_id 吗?
我是 rails 初学者,我面临一个基本问题。我找到了几个解决方案,但其中 none 完全描述了我的问题。 我有两个模型:Contact 和 Group
Group has_many :contacts
Contact belongs_to :group
(通过设计有第三个用户模型)
创建新联系人时,我希望用户能够通过 select 选项(如下拉字段)select 此联系人所属的组。
我添加了 :group_id 联系人索引 table:
class AddGroupIdToContacts < ActiveRecord::Migration
def change
add_column :contacts, :group_id, :integer
end
end
在 view/contacts/_form 中,我使用了 collection_select 选项来输出显示可用组的下拉字段:
<%= form_for(@contact) do |f| %>
<% if @contact.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@contact.errors.count, "error") %> prohibited this contact from being saved:</h2>
<ul>
<% @contact.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
...
<div class="field">
<%= f.label :group_id %><br>
<%= f.collection_select(:group_id, Group.all, :id, :name) %>
</div>
...
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我可以成功输入新的联系人,但是在控制台中检查时我有一个空的 group_id: nil 字段。
将 selected 组的 ID 输入到 group_id 字段的正确方法是什么?如何显示此条目(最好使用组 ID 的名称) show.html.erb?
我知道这是一个基本问题,但我对 rails 还是很陌生。感谢您的帮助!
<%= f.select :group_id, options_from_collection_for_select(Group.all, , 'id', 'name') %>
这对你有帮助。
我试过上面的代码,它工作正常。我可以保存与 group_id 的联系,而无需更改您的代码。请再次检查。你在控制器的参数中得到 group_id 吗?