Ruby on rails 更新失败时的表单_,尽管创建工作正常?
我有一个型号,Ruby on rails 更新失败时的表单_,尽管创建工作正常?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一个型号,光盘 Disc#new操作将@Disc=Disc.new传递到一个视图,该视图具有一个简单的表单(用于帮助程序的读取) form_for(:disc, url: {action: 'create'}) do |f| # the usual text fields etc follow 在discs\u controller.rb中,我有一个私有方法disc\u params,它读取params.require(:disc).permit(:owner,:title)等等Dis
光盘
Disc#new
操作将@Disc=Disc.new
传递到一个视图,该视图具有一个简单的表单(用于
帮助程序的读取)
form_for(:disc, url: {action: 'create'}) do |f|
# the usual text fields etc follow
在discs\u controller.rb
中,我有一个私有方法disc\u params
,它读取params.require(:disc).permit(:owner,:title)
等等Disc#create
只是简单地说Disc.create(Disc#u参数)
这一切都很好。我遇到的麻烦是创建编辑表单
Disc#edit
读取@Disc=Disc.find(params[:id])
。edit
视图是new
视图的精确克隆,只有它的开头行是(:disc,url:{action:'update',id:@disc.id})的表单。它提交到Disc#update
,其中读取Disc.find(params[:id]).update(Disc#params)
在我看来,它应该可以工作,但显然我错了,因为它抛出了以下错误:参数丢失或值为空:disc
轨迹指向这两条线:
params.require(:disc).permit(:owner_id, :title, :contents)
及
这个难倒我了。如果有人能澄清这似乎不起作用的原因,我将不胜感激。请不要使用这个:
form_for(:disc, url: {action: 'create'}) do |f|
form_for(:disc, url: {action: 'update', id: @disc.id}) do |f|
只需提供一个Disc
model的实例:
form_for @disc do |f|
它肯定会消除您的错误(生成正确的url和方法),也会让您有机会使用相同的表单进行新建
和编辑
操作。我认为您不需要做额外的工作,只需像这样更改表单即可:
form_for @disc do |f|
#your fields
end
20多分钟后给出同样的答案有什么意义?我只是不明白,无意冒犯。
form_for @disc do |f|
#your fields
end