【问题标题】:Empty file_field on submit: param is missing or the value is empty提交时为空 file_field:参数丢失或值为空
【发布时间】:2015-01-03 10:24:08
【问题描述】:

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

  • 红宝石 2.1.3
  • 导轨 4.1.6

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

ActionController::ParameterMissing in UsersController#update_avatar

参数缺失或值为空:用户

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

型号:

class User < ActiveRecord::Base
  dragonfly_accessor :avatar
  
  ...

  validates_presence_of :avatar

  ...

控制器:

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

查看:

- 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)

【问题讨论】:

    标签: ruby-on-rails validation ruby-on-rails-4 file-upload dragonfly-gem


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      尝试在您的更新操作中使用此代码:

      @user = User.find(params[:id])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多