【发布时间】:2014-03-23 02:36:42
【问题描述】:
首先,这是我第一次尝试使用accepts_nested_attributes_for,所以我还在学习,希望我错过了一些小东西。
所以我已经设置并按照示例进行accepts_nested_attributes_for,但我不断收到ActiveModel::MassAssignmentSecurity::Error at /reports Can't mass-assign protected attributes: deployment
我不知道为什么,任何帮助将不胜感激代码如下:
报告模型:
class Report < ActiveRecord::Base
attr_accessible :name, :weekending, :visable, :deployments_attributes
has_many :deployments, dependent: :destroy
accepts_nested_attributes_for :deployments, allow_destroy: true
end
部署模型:
class Deployment < ActiveRecord::Base
attr_accessible :deployment_comments, :deployment_name, :environment, :report_id
belongs_to :report
end
报告/new.html.erb
<%= form_for (@report) do |f| %>
<%= render 'shared/error_messages' %>
<h4>Reprot Detials</h4>
<%= f.label "Report Written By: " %> <%= f.text_field :name %><br>
<%= f.label "Weekending: " %> <%= f.text_field :weekending %><br>
<%= f.label "Visable: " %> <%= f.text_field :visable %><br>
<%= f.fields_for :deployment do |builder| %>
<%= render 'reports/forms/deployment_fields', f: builder %>
<% end %><br><br>
<%= f.submit class: "btn btn-large btn-primary" %>
<% end %>
report/forms/_deployment_fields.html.erb
<h4>Deployments</h4>
<%= f.label :deployment_name, "Name of Deployment:" %><br />
<%= f.text_field :deployment_name %><br />
<%= f.label :environment, "Environment of Deployment:" %><br />
<%= f.text_field :environment %><br />
<%= f.label :deployment_comments, "Deployment Comments:" %><br />
<%= f.text_area :deployment_comments %><br />
报告控制器:
class ReportsController < ApplicationController
def index
@reports = Report.paginate(:page => params[:page],
:per_page => 20,
:order => 'Weekending desc')
end
def show
@report = Report.find(params[:id])
end
def new
@report = Report.new
end
def create
@report = Report.new(params[:report])
if @report.save
redirect_to reports_url
else
render 'new'
end
end
数据库迁移:
timestamp_create_deployments.rb
class CreateDeployments < ActiveRecord::Migration
def change
create_table :deployments do |t|
t.string :environment
t.integer :report_id
t.string :deployment_name
t.string :deployment_comments
t.timestamps
end
add_index :deployments, [:report_id]
end
end
timestap_create_reports.rb
class CreateReports < ActiveRecord::Migration
def change
create_table :reports do |t|
t.date :weekending, :null => false
t.string :name, :null => false
t.boolean :visable, :default => false, :null => false
t.timestamps
end
end
end
【问题讨论】:
-
另外,如果我更改 New.html.erb 以便 ' ' 是 '' 那么部署字段不会显示??
标签: ruby-on-rails-3 nested-forms nested-attributes