gpt4 book ai didi

ruby-on-rails - 提交时为空 file_field : param is missing or the value is empty

转载 作者:行者123 更新时间:2023-12-02 04:52:19 24 4
gpt4 key购买 nike

我有一个带有蜻蜓的应用程序来管理我的图片上传:

  • ruby 2.1.3
  • rails 4.1.6

上传有效,但在更新操作时,当文件为空时,我收到以下消息:

ActionController::ParameterMissing in UsersController#update_avatar

param is missing or the value is empty: user

这是有道理的,因为我在提交时没有传递任何参数。但是验证呢?

型号:

class User < ActiveRecord::Base
dragonfly_accessor :avatar

...

validates_presence_of :avatar

...

Controller :

class UsersController < ApplicationController
...

def update_avatar
@user = User.find_by(id: current_user.id)
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to edit_user_avatar_url, notice: t('flash.actions.update_avatar.notice') }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end

...

def user_params
params.require(:user).permit(:username, :name, :avatar, :birth)
end
end

View :

- case params[:action]

...

- when 'edit_avatar', 'update_avatar'
= form_for @user, url: { action: 'update_avatar'} do |f|
ul.list-form
li.item-form
= f.label :avatar
span.label-title
' Foto:
= f.file_field :avatar

.submit-area
= button_tag "<span class='wrapper'>Update Avatar</span>".html_safe, class: 'bt'

...

我做错了什么?验证似乎不起作用。

更新:

我正在通过 hidden_​​field 传递 id 参数(我不喜欢这个解决方案...)并解决了部分问题。

但是验证还是不行。

= hidden_field(:user, :id)

最佳答案

这是您问题的答案,我知道这个答案有点太晚了,但也许其他人会觉得它有帮助。我遇到了同样的问题。

https://github.com/rails/rails/issues/17947

简而言之,如果 file_field 为空,那么表单将不会为该文件提交任何参数。您会在上面的链接中找到两个答案如何解决您的问题。使用 hiden_field_tag 或使用 params.fetch(:user, {})

关于ruby-on-rails - 提交时为空 file_field : param is missing or the value is empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26787498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com