2016-05-18 87 views
0

附件恢復似乎工作正常,但我沒有任何插入數據庫(空,空,null,空),我沒有文件上傳到我的應用程序中的任何文件夾。 ..rails回形針mysql不保存文件

class AddAttachmentCvToUsers < ActiveRecord::Migration 
    def change 
    change_table :users do |t| 
     t.attachment :cv 
    end 
    end 
end 

用戶模式:

attr_accessor :cv 
validates_attachment :cv 
has_attached_file :cv, :path=>":rails_root/storage/#{Rails.env}#{ENV['RAILS_TEST_NUMBER']}/." 

我也安裝carrierwave但仍然沒有效果.. 編輯: 用戶控制器(我沒有其他控制器附件):

class UsersController < ApplicationController 

    def new 
     @users = User.new 
    end 

    def create 
     @user = User.new(user_params) 
     if @user.save 
      session[:user_id] = @user.id 
      current_user = @user.id 

      redirect_to '/status' 
     else 
      redirect_to '/signup' 
     end 
    end 

    private 
    def user_params 
     params.require(:user).permit(:first_name, :last_name, :email, :PESEL, :phone, :password,:cv) 
    end 
end 

查看新用戶與attachement:

<div class="login"> 
    <div class="container"> 
    <div class="form"> 

    <h1>SIGN UP</h1> 

    <%= form_for @users,:html=> {:multipart=>true} do |f| %> 
     <%= f.text_field :first_name, :placeholder => "First name" %> 
     <%= f.text_field :last_name, :placeholder => "Last name" %> 
     <%= f.email_field :email, :placeholder => "Email" %> 
     <%= f.text_field :PESEL, :placeholder => "PESEL number" %> 
     <%= f.phone_field :phone, :placeholder => "Phone Number" %> 
     <%= f.password_field :password, :placeholder => "Password" %> 
     <p>CV</p> 
     <%= f.file_field :cv, name: "CV", class: 'form-control' %> 
     <%= f.submit "Sign up", class: "btn-submit" %> 
    <% end %> 


    </div> 
    </div> 
</div> 

從控制檯的一些日誌:

Started POST "/users" for 127.0.0.1 at 2016-05-18 03:55:17 +0200 
Processing by UsersController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"Fw6easThY51CDppDDVfqO0ProQITaltqP3DaIL3An67ey4vGXh2yEerhhhxoo3bTp/mKbkIaAmktzBviBIjg8g==", "user"=>{"first_name"=>"Test", "last_name"=>"Test", "email"=>"[email protected]", "PESEL"=>"91020300441", "phone"=>"609123123", "password"=>"[FILTERED]"}, "CV"=>#<ActionDispatch::Http::UploadedFile:0x007f25790c1b60 @tempfile=#<Tempfile:/tmp/RackMultipart20160518-26849-rqaabr.pdf>, @original_filename="pdf-test.pdf", @content_type="application/pdf", @headers="Content-Disposition: form-data; name=\"CV\"; filename=\"pdf-test.pdf\"\r\nContent-Type: application/pdf\r\n">, "commit"=>"Sign up"} 
    (0.1ms) BEGIN 
    User Exists (1.4ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY '[email protected]' LIMIT 1 
    User Exists (0.1ms) SELECT 1 AS one FROM `users` WHERE `users`.`PESEL` = BINARY '91020300441' LIMIT 1 
    SQL (0.1ms) INSERT INTO `users` (`first_name`, `last_name`, `email`, `PESEL`, `phone`, `password_digest`, `created_at`, `updated_at`) VALUES ('Test', 'Test', '[email protected]', '91020300441', '609123123', '$2a$10$HmHAiJkHv1Tada/OpzKXKOISiwumoFKTy48tFpNBYuATq/A5GaC9G', '2016-05-18 01:55:17', '2016-05-18 01:55:17') 
    SQL (1.0ms) INSERT INTO `job_apps` (`user_id`, `created_at`, `updated_at`) VALUES (35, '2016-05-18 01:55:17', '2016-05-18 01:55:17') 
    (3.0ms) COMMIT 
Redirected to http://localhost:3000/status 
Completed 302 Found in 135ms (ActiveRecord: 8.2ms) 


Started GET "/status" for 127.0.0.1 at 2016-05-18 03:55:17 +0200 
Processing by JobAppsController#index as HTML 
+0

請出示處理文件上傳的控制器代碼,包含文件上載表單的視圖代碼以及顯示上傳發生的日誌。 –

+0

@MichaelGaskill編輯 – andrey

+0

所以,要明確一點,你沒有任何代碼在服務器上接收或存儲上傳的文件?您提到的INSERT在附件中顯示(null,null,null,null)在哪裏? –

回答

0

您已經覆蓋了name屬性file_field,這打破了Rails的命名約定。如果您刪除name屬性,則Rails將能夠將上傳到:cv字段的文件詳細信息傳遞到數據庫。

更改file_field這樣:

<%= f.file_field :cv, class: 'form-control' %> 

如果你的JavaScript附加到形式,以及需要參考的file_field元素,你可以使用這個,而是:

<%= f.file_field :cv, id: "cv", class: "form-control" %>