2016-07-11 27 views
0

我想將.xlsx臨時文件從表單傳遞到導入模型。但是,我遇到ActiveModel::ForbiddenAttributesError。我正確地定義了強參數,但是在處理沒有屬性的類的虛擬列時可能會有一些特殊性。ActiveModel :: ForbiddenAttributesError在沒有屬性的類中的虛擬列

當指向本地文件路徑時,模型邏輯工作,所以我把它的大部分都留下了。這裏是我的代碼:

new.html.erb

<%= form_for @package_import do |f| %> 
    <%= f.file_field :file %> 
    <%= f.submit "Import" %> 
<% end %> 

package_imports_controller.rb

class PackageImportsController < ApplicationController 
    def new 
    @package_import = PackageImport.new 
    end 

    def create 
    @package_import = PackageImport.new(params[:package_import]) 
    if @package_import.save 
     redirect_to root_url, notice: "Imported packages" 
    else 
     render :new 
    end 
    end 

private 

    def package_import_params 
     params.require(:package_import).permit(:file) 
    end 

end 

package_import.rb

class PackageImport 
include ActiveModel::Model 
... 
end 

回答

1

你需要在你的@package_import = PackageImport.new(params[:package_import])改變params[:package_import]到方法。

def create 
    @package_import = PackageImport.new(package_import_params) 

    if @package_import.save 
    redirect_to root_url, notice: "Imported packages" 
    else 
    render :new 
    end 
end 
+1

這是朝正確方向邁出的一步。因爲:file是一個虛擬屬性,我還必須在模型中添加'attr_accessor:file'使它按預期工作。 – sso777

相關問題