用于上传文件的未定义方法`original_filename'

时间:2014-01-20 10:18:36

标签: ruby-on-rails-4

未定义的方法`original_filename'用于#..当我点击CreateProfile Button时出现此错误

控制器

def createProfile         如果params [:profile] .blank?

返回
    @profile = Profile.new
    @profile.upload_file = params[:profile]

    if @profile.save
        flash[:notice] = "Thank You for your submission"
        redirect_to profile_index_path
    else
        flash[:notice] = "Problem in your submission"
        render 'new'        
    end
end

查看

%h3 Apply For Job
=form_for :profile, url:{action: "createProfile"}, :multipart => true, html:{class: "form-horizontal"} do |f|
    %div.form-group
        =f.label :data, 'CV', {:class => 'col-lg-2 control-label'}
        %div.col-lg-3
            =f.file_field :data, {:class => 'form-control'}
    %div.form-group
        %div.col-lg-offset-2.col-lg-10
            =f.submit :class => 'btn btn-primary'
            = link_to profile_index_path do
                = content_tag :button, class: "btn btn-default" do
                    ="Cancel"

模型

def upload_file=(imcoming_file)
        self.filename = imcoming_file.original_filename
        self.content_type = imcoming_file.content_type
        self.data = imcoming_file.read
    end

    def filename=(new_filename)
        write_attribute("filename", sanitize_filename(new_filename))
    end

    private
    def sanitize_filename(filename)
        just_filename = File.basename(filename)
        just_filename.gsub(/[^\w\.\-]/, '-')
    end

为什么会出现original_filename错误?任何建议......?

1 个答案:

答案 0 :(得分:0)

在控制器第二行的末尾添加[:data]params[:profile]提供了与表单中的配置文件模型相关的一组参数。在您的情况下,只有与'data'相关的参数可用。通过向行添加[:data],您将控制器指向该特定参数。

当然,您需要指定要存储上传文件的目录。 Ruby on Rails文档(http://guides.rubyonrails.org/form_helpers.html)提供了有用的信息。

对你来说可能有点晚,但我希望有人能从这个答案中受益。