2017-12-12 5 views
2

をモデル化するためにcollection_selectヘルパーからのデータを保存できません。なぜ私は理解できないようです。は私がcollection_selectヘルパーを使用して、フォームを経由して接触モデルに組織を保存しようとしているが、それはモデルにデータを保存していない

class Organization < ApplicationRecord 
has_many :deals, through: :contacts 
has_many :contacts, dependent: :destroy 
end 

ここ
class Contact < ApplicationRecord 
belongs_to :organization 
has_many :deals 
end 

は私organization.rbモデルです:

私はここで

5.1.4は私のcontact.rbモデルですのRailsを使用しています

ここに私のschema.rb

create_table "contacts", force: :cascade do |t| 
t.string "contact_name" 
t.integer "organization_id" 
t.datetime "created_at", null: false 
t.datetime "updated_at", null: false 
t.index ["organization_id"], name: 
"index_contacts_on_organization_id" 
end 

create_table "organizations", force: :cascade do |t| 
t.string "org_name" 
t.datetime "created_at", null: false 
t.datetime "updated_at", null: false 
end 

ここに私のcontacts_controller.rbさ:

<h1>New Contact</h1> 

<%= form_with scope: :contact, url: contacts_path, local: true do |form| %> 

<p> 
<%= form.label :contact_name %><br> 
<%= form.text_field :contact_name %> 
</p> 

<p> 
<%= form.label :organization %><br> 
<%= form.collection_select(:organization_id, Organization.all, :id, :org_name) %> 
</p> 

<p> 
<%= form.submit %> 
</p> 
<% end %> 
<hr> 

編集:私は追加

def new 
@contact = Contact.new 
end 

def edit 
@contact = Contact.find(params[:id]) 
end 

def create 
@contact = Contact.new(contact_params) 

if @contact.save 
redirect_to @contact 
else 
render 'new' 
end 
end 

private 

def contact_params 
params.require(:contact).permit(:contact_name, :organization_id, 
           organizations_attributes: [:org_name, 
:id]) 
end 

ここでは私のnew.html.erbファイルです私のコントローラとスキーマのparams。あなたのnew.html.erbファイル内

class Organization < ApplicationRecord 
    has_many :deals, through: :contacts 
    has_many :contacts, dependent: :destroy 

    def org_name 
    "#{name}" 
    end 
end 

:organization.rbモデルで

+1

のparamsは、フォーム –

答えて

0

<%= form.fields_for :organizations do |o| %> 
    <%= o.collection_select(:organization_id, Organization.all, 
          :id, :org_name, 
          {:prompt => 'Please select the organization'}) %> 
+0

よしの提出時に送付されて投稿してください、私が作ってみましたネストされたフォームですが、 'undefined method' build 'がnil:NilClass'というエラーメッセージを受け取っていますので、何か間違っていたに違いありません。 – miklki14567

+0

入れ子フォームを使用した後、org_nameを指定するか、ビューを更新してください –

関連する問題