停止`提交`按钮炸毁铁路应用程序

时间:2014-04-08 22:36:08

标签: ruby-on-rails

以下是我上传新个人资料图片的表单:

<%= form_for(@user, :html => { :multipart => true }) do |f| %>
    <%= f.fields_for :avatar do |f| %>
        <%= f.file_field :file_name %>
        <%= f.submit 'Upload new Profile Image' %>
    <% end %> 
<% end %>

完美无缺。但是,当有人在选择图像之前按下提交按钮时,我的控制器会给我这个错误:

ActionController::ParameterMissing

在生产方面,它具有完全占用应用程序的效果。那我该如何解决这个问题?

class ImagesController < ApplicationController
 before_action :set_user, only: [:create]


  def create
    @user.create_avatar(file_name: image_params[:avatar][:file_name])

    redirect_to @user, success: 'Profile image created!'
  end


  private

  def set_user
    @user = User.find(params[:user_id])
  end

  def image_params
    params.require(:user).permit(avatar: [:file_name])
  end
end

1 个答案:

答案 0 :(得分:1)

你有这个

def image_params
  params.require(:user).permit(avatar: [:file_name])
end

所以它需要:用户参数作为&#34; params [:user]&#34;,但它没有,因为当你没有选择任何内容时,表单不会被&#39;甚至发送参数

你应该删除&#34;要求(:用户)&#34;并处理两个可能的情况,其中param不存在做不同的事情(可能:如果存在,上传,如果不存在则仅重定向并显示错误)。