在rails内部使用REGEX时动态常量赋值ApplicationController?

时间:2016-12-06 16:49:32

标签: ruby-on-rails regex

我需要将base64图像字符串转换为实际文件,然后上传到服务器。

但似乎当我尝试使用REGEX rails控制器解码base64文件时,控制器不允许我这样做。

这是我的控制器

def update_with_image
    user = current_user

    REGEXP = /\Adata:([-\w]+\/[-\w\+\.]+)?;base64,(.*)/m


    data_uri_parts = user_update_params[:profile_image].match(REGEXP) || []
    extension = MIME::Types[data_uri_parts[1]].first.preferred_extension
    file_name = "user_profile_image_#{user.id}.#{extension}"

    File.open(file_name, 'wb') do |file|
      file.write(Base64.decode64(data_uri_parts[2]))
    end

    uploader = PictureUploader.new
    uploader.store!(file_name)
    user_update_params[:profile_image] = uploader.url

    if user.update_attributes(user_update_params)
      # Handle a successful update.
      render json: user, status: 200 ,serializer: UserSerializer
    else
      render json: { errors: user.errors }, status: 422
    end
end

这是我从服务器获得的

"#<SyntaxError: /Sites/xxx/users_controller.rb:57: dynamic constant assignment↵    REGEXP = /\Adata:([-\w]+\/[-\w\+\.]+)?;base64,(.*)/m↵`            ^>"

那么我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

现在我直接传递表达式而不使用变量,它工作正常。 - user3403614