2

我有一个嵌套资源,如下所示:user/1/photos/new

resources :users, only: [] do
  resources :photos, except: [:show]
end

我的 form_for 如下所示:

= form_for([@user, @photo], html: { multipart: true }) do |f|

  .inputs
    = f.file_field :attached_photo

  .actions
    = f.submit :submit

我相信我遇到的问题是强大的参数:

   def photo_params
      params.require(:photo).permit(:title, :attached_photo)
    end

当我点击表单上的提交按钮时,出现以下错误:

照片控制器中的 ActionController::ParameterMissing#create param not found: photo

我正在使用回形针,所以在我的模型中:

has_attached_file :attached_photo

请指教。

4

1 回答 1

2

如果您想确保用户在提交此表单时上传照片,那么您应该在Photo模型上添加一个验证,如下所示:

validates_attachment_presence :attached_photo

然后如果用户没有上传照片,表单会重新渲染,告诉用户上传照片。

photo如果参数不存在,您还需要使用此强参数代码来确保不会出现错误:

def photo_params
  params.require(:photo).permit(:title, :attached_photo) if params[:photo]
end
于 2013-10-13T17:51:15.370 回答