我正在RailsCast#415(http://railscasts.com/episodes/415-upgrading-to-rails-4?view=asciicast)之后将我的Rails应用程序从Rails 3.2.8升级到Rails 4.0.0,所有这些都很好,直到我升级到强参数。在更新事件控制器以使用强参数后,我能够提交表单来创建新事件(不会抛出验证错误),但所有提交的参数都为空,终端日志(在本地运行)说,
WARNING: Can't mass-assign protected attributes for Event: street, description, host_name, event_date(1i), event_date(2i), event_date(3i), event_time(1i), event_time(2i), event_time(3i), event_time(4i), event_time(5i), event_name, end_time(1i), end_time(2i), end_time(3i), end_time(4i), end_time(5i)
很明显我遇到了质量分配问题而且强参数无法正常工作。
事件控制器具有以下私有方法:
private
def event_params
params.require(:event).permit(:city, :state, :street, :zip, :description,
:host_name, :host_contact, :event_date, :event_time,
:instructions, :event_name, :end_time)
end
事件#create动作看起来像(用脚手架创建):
def create
@event = Event.new(event_params)
respond_to do |format|
if @event.save
format.html { redirect_to @event, notice: 'Event was successfully created.' }
format.json { render json: @event, status: :created, location: @event }
else
format.html { render action: "new" }
format.json { render json: @event.errors, status: :unprocessable_entity }
end
end
end
gemfile包含以下gem,供转换时使用: gem'protected_attributes'
并且application.rb文件的whitelist_attributes设置为false(已注释掉):
# config.active_record.whitelist_attributes = true
任何有关我在这里连接点所缺少的帮助都会有所帮助。感谢。
答案 0 :(得分:1)
在我的gemfile中有“gem'en protected_attributes'”导致与重新定义的方法发生冲突。删除它,一切都很好。