Ich habe Probleme mit meiner Anwendung, die Code in die Datenbank schreibt. Ich kann es in den Parametern sehen, aber nicht in der Datenbank, nachdem es das Formular abgibt.Polymorphe verschachtelte Attribute, die nicht in die Datenbank schreiben
Ich habe ein Adressobjekt erstellt, das ich zum Kursobjekt hinzufügen möchte.
Modell
class Course < ActiveRecord::Base
has_one :address, :as => :addressable
accepts_nested_attributes_for :address
// more code
end
class Address < ActiveRecord::Base
belongs_to :addressable, :polymorphic => true
end
-Controller
class CoursesController < ApplicationController
def course_params
params.require(:course).permit(:short_description, :picture, :name, :cost, :description, :occurs_at, address_attributes: [:line1, :line2, :city, :state, :zip])
end
def create
@course = current_user.courses.build(course_params)
@course.build_address
if @course.save
flash[:success] = "Course created!"
redirect_to root_url
else
@feed_items = []
render 'static_pages/home'
end
end
//No address controller
Ich habe versucht, den build_address Anruf zu bewegen innerhalb der speichern, so scheint es, in die Datenbank zu schreiben, aber nicht wirklich assoziieren die beiden ...
Helper
module FormHelper
def setup_course(course)
course.address ||= Address.new
course
end
end
Ansicht
<%= form_for(setup_course(@course), html: { multipart: true }) do |f| %>
<%= f.fields_for :address do |address| %>
<%= render :partial => 'shared/address', :locals => {:f => address} %>
<% end %>
<% end %>
Database Console
Processing by CoursesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"KKDEbmm7vBFjDR6KPHn29ZbroA6FyLtkUaJhBu5kAELeL1Zs89WmonpDH8wCCqtFeiMDXxypJwsHv/ck5wbznA==", "course"=>{"name"=>"11", "short_description"=>"fdsaf0dsa3f032ds", "description"=>"f03dsaf1dsa01", "occurs_at"=>"<date>", "cost"=>"", "address_attributes"=>{"line1"=>"aa", "line2"=>"bb", "city"=>"cc", "state"=>"wa", "zip"=>"12345"}}, "commit"=>"Create Course"}
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]]
(0.1ms) begin transaction
SQL (0.5ms) INSERT INTO "courses" ("short_description", "name", "description", "user_id", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?) [["short_description", "fdsaf0dsa3f032ds"], ["name", "11"], ["description", "f03dsaf1dsa01"], ["user_id", 1], ["created_at", "2016-05-27 02:33:31.234818"], ["updated_at", "2016-05-27 02:33:31.234818"]]
SQL (0.4ms) INSERT INTO "addresses" ("addressable_type", "addressable_id", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["addressable_type", "Course"], ["addressable_id", 17], ["created_at", "2016-05-27 02:33:31.247646"], ["updated_at", "2016-05-27 02:33:31.247646"]]
(13.6ms) commit transaction
Ich Laufschienen 4
Vielen Dank für Ihre Hilfe!
Was macht Ihr CoursesController Aktionsmethode erstellen aussehen? – Anand
Bist du sicher? Das Protokoll zeigt Datensätze, die in Kurse und Adressen eingefügt werden. – max
Ich habe das create im courses_controller hinzugefügt. @Anand – bralyan