Ruby on rails 3 Rails 3——构建不保存到数据库(Railscast 196)
我和Railscast196一起跟踪。我有两个层次的联想。应用程序->表单->问题。这是表单控制器中的新操作Ruby on rails 3 Rails 3——构建不保存到数据库(Railscast 196),ruby-on-rails-3,activerecord,nested-attributes,railscasts,Ruby On Rails 3,Activerecord,Nested Attributes,Railscasts,我和Railscast196一起跟踪。我有两个层次的联想。应用程序->表单->问题。这是表单控制器中的新操作 def new @app = App.find(params[:app_id]) @form = Form.new 3.times {@form.questions.build } end 视图显示了所有3个问题,我可以提交表格。。。但是没有为这些问题插入数据库。这是我的创建操作 def create @app = App.find(params[:app_id]) @for
def new
@app = App.find(params[:app_id])
@form = Form.new
3.times {@form.questions.build }
end
视图显示了所有3个问题,我可以提交表格。。。但是没有为这些问题插入数据库。这是我的创建操作
def create
@app = App.find(params[:app_id])
@form = @app.forms.create(params[:form])
respond_to do |format|
if @form.save
format.html { redirect_to(:show => session[:current_app], :notice => 'Form was successfully created.') }
format.xml { render :xml => @form, :status => :created, :location => @form }
else
format.html { render :action => "new" }
format.xml { render :xml => @form.errors, :status => :unprocessable_entity }
end
end
end
以下是发送到我的创建方法的参数:
{"commit"=>"Create Form",
"authenticity_token"=>"Zue27vqDL8KuNutzdEKfza3pBz6VyyKqvso19dgi3Iw=",
"utf8"=>"✓",
"app_id"=>"3",
"form"=>{"questions_attributes"=>{"0"=>{"content"=>"question 1 text"},
"1"=>{"content"=>"question 2 text"},
"2"=>{"content"=>"question 3 text"}},
"title"=>"title of form"}}`
这表明参数被正确发送。。。我想。问题模型只有一个内容文本列
感谢您的帮助:假设:
你的表格设置正确,
您的服务器显示您的数据正在发送到新操作,并且
您的模型不包含阻止保存的回调,
尝试更改:
@form = @app.forms.create(params[:form])
到
好的,我知道了。原来我应该多看看我的控制台。尝试将问题插入数据库时挂起的错误是警告:无法批量分配受保护的属性:问题\u属性。将其添加到可访问属性中就成功了
class Form < ActiveRecord::Base
belongs_to :app
has_many :questions, :dependent => :destroy
accepts_nested_attributes_for :questions
attr_accessible :title, :questions_attributes
end
虽然这有助于将外键正确设置到表单表中的app_id表单,但问题仍然没有保存。
class Form < ActiveRecord::Base
belongs_to :app
has_many :questions, :dependent => :destroy
accepts_nested_attributes_for :questions
attr_accessible :title, :questions_attributes
end