1
我是一名Rails新手,在這個問題上與我無關......總之,我有一個應用程序可以跟蹤帶有IP地址的服務(服務器)。我試圖做的是建立起來,這樣,當我創建一個新的服務將出現以下情況:Rails 3嵌套屬性?
- 所有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 %>
我如何使它所以每個選定的IP用新創建的service_id更新?
在此先感謝您的幫助。
非常感謝,您的回答幫助我清除了關於關係的事情...當我提交表單時,我得到了「ActiveRecord :: AssociationTypeMismatch」 - > Ip(#2253505960)字符串(#2241209340)。我的創建操作(我懷疑是原因)有以下幾種:'@user = current_user' @service = @ user.services.create(params [:service])' –
對不起,應該是'collection_select:ip_ids '因爲你實際上正在編輯ID數組(整數)。更正了答案。 – sj26