我正在创建一个简单的应用程序来输入和显示相册。我可以创建一个唱片(专辑)并为其分配一个艺术家(这是在艺术家控制器中创建的)。我想将轨道添加到记录中,并使用一个控制器(记录控制器)以一种形式(使用简单形式)执行此操作。belongs_to名称属性不保存嵌套导轨形式
这里是我的记录模式
class Record < ActiveRecord::Base
belongs_to :artist
has_many :tracks
accepts_nested_attributes_for :tracks
这里是我的轨道模型
class Track < ActiveRecord::Base
belongs_to :record
这里的记录控制器
class RecordsController < ApplicationController
def index
@records = Record.all
end
def new
@record = Record.new
end
def create
@record = Record.create(record_params)
@record.tracks.build
@record.save!
redirect_to records_path
end
def record_params
params.require(:record).permit(:name, :artist_id, record_tracks_attributes: [:name])
end
,这里是我的记录/新/ html.haml页
= simple_form_for @record do |f|
= f.collection_select(:artist_id, Artist.all, :id, :name, prompt: true)
= f.input :name
= f.simple_fields_for :record_tracks do |t|
= t.input :name
= t.button :submit
= link_to 'add artist', new_artist_path
这似乎保存正常,但是当我看到在控制台中,我得到以下
> Track.last
Track Load (0.6ms) SELECT "tracks".* FROM "tracks" ORDER BY "tracks"."id" DESC LIMIT 1
=> #<Track id: 20, name: nil, created_at: "2015-10-05 17:30:30", updated_at: "2015-10-05 17:30:30", record_id: 39>
为什么叫不节省了轨道,我不能工作了。我哪里错了?任何帮助将不胜感激。
感谢奥列格!这让它工作! –