我有一个使用 IP 地址跟踪服务(服务器)的应用程序。我正在尝试对其进行设置,以便在创建新服务时发生以下情况:
- 查找所有 IP 地址,如果它们没有 service_id,则它们被归类为可用并返回到新服务页面上的选择框。
- 用户从选择框中选择一个或多个 IP 地址,填写其余所需的服务数据,然后当他们点击提交时,每个 IP 地址都会更新为刚刚创建的服务的 service_id。(以便将 IP 标记为被占用)。
据我了解,我认为这应该可以通过嵌套属性或虚拟属性实现......但我不确定。
我有这样的模型:
class Service < ActiveRecord::Base
has_many :ips
attr_accessor :service_ips
end
class Ip < ActiveRecord::Base
belongs_to :service
end
像这样的控制器:
class ServicesController < ApplicationController
def new
@available_ips = Ip.where(:service_id == nil)
end
像这样的视图:
<%= form_for(@service) do |f| %>
<%= f.label :service_ips %>
<%= f.collection_select(:service_ips, @available_ips, :id, :address, { }, {:multiple => true, :size => 5}) %>
<%= f.label :hostname %><br />
<%= f.text_field :hostname, :size => 40 %>
<%= f.submit :id => "submit"%>
<% end %>
如何使用新创建的 service_id 更新每个选定的 IP?