1
私はレール初心者ですので、これで私と一緒に裸です...要するに、IPアドレスを持つサービス(サーバー)を追跡するアプリケーションがあります。Rails 3ネストされた属性?
- 彼らが利用可能に分類している、その後のservice_idを持っていない場合は、すべてのIPアドレスは、見上げている:私は新しいサービスを作成するときに、次の問題が発生したように、私は何をしようとしているが、それを設定されています新しいサービスページの選択ボックスに戻ります。
- ユーザが選択ボックスから1つ以上の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 'あなたが実際にids(整数)の配列を編集しているからです。答えに訂正されました。 – sj26