用于#<actiondispatch :: http :: uploadedfile的未定义方法`bson_type':0x007f9450dbea70> </actiondispatch :: http :: uploadedfile:0x007f9450dbea70>

时间:2014-03-03 10:16:47

标签: ruby-on-rails mongodb ruby-on-rails-4.1

我正在使用rails 4版本。我使用MongoDb作为我项目的数据库。我想执行上传操作,因为我正在使用“paperclip gem”。我收到了上述错误。实际上,错误位于NoMethodError中的候选控制器CandidatesController#create_image中。请帮我解决这个问题。

如果要上传任何其他方法,这与mongoid兼容,请帮助我获得解决方案。

这是我的候选人控制员行动:

def profile
  @candidate = Candidate.find(params[:id])
  @image = Image.new
end

def create_image
  @candidate = Candidate.find(params[:id])
  @image = Image.new(new_image)
  @user = current_user
  if @image.save
    redirect_to profile_user_candidate_path(@user.id.to_s, @candidate.id.to_s)
  end
end
private
  def new_image
    params.require(:image).permit(:logo, :candidate_id)
  end

这是我的图像控制器

class ImagesController < ApplicationController
  def index
    @images = Images.all
  end

  def new
    @image = Image.new
  end

  def show
    @id = params[:id]
    @image = Image.find(@id)
  end 

  def create
    @image = Image.new(params[:image])
    if @image.save
      redirect_to :action => :show, :id => @image.id
    end
  end

  private
    def image
      params.require(:image).permit
    end
end

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用mongoid-paperclip

如果你想一起使用mongodb和paperclip,那么使用mongoid-paperclip可以解决你所有的问题。

您可以帮助我们回答的其他方式

  • 目前尚不清楚控制器的名称是什么。请添加整个班级,以便清楚名称。
  • 目前尚不清楚您收到错误的是哪一行。你应该能够告诉我们。
  • 如果您在此处粘贴整个错误消息,则总是更清楚。甚至还有一点堆栈跟踪。
  • 告诉我们当您收到错误时用户正在尝试做什么。
  • 同时向我们提供您的路线可能会有所帮助

答案 1 :(得分:0)

可能是首先不允许使用参数。您应该先进行new_params = params.permit!.to_h,然后使用它。

更好的是,只允许您需要的东西。