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