をモデル化するために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モデルで
のparamsは、フォーム –