2014-10-30 81 views
0

我是新來的鐵軌。我試圖上傳附在名字上的圖片。該表單的視圖名稱爲index,並且存在名爲show的視圖的鏈接,該視圖將顯示添加名稱時上傳的名稱和圖像。該控制器是pages使用回形針在Rails上傳圖片丟失

我從一個基本的表格開始,它的工作原理是將一個name字段添加到Users模型中。問題是,當我使用回形針上傳圖像時,將名字壓入數據庫,圖像沒有顯示在show中,而是一個破碎的圖像鏈接。讓我解釋我是如何做到的。

我安裝了回形針。

Users模型添加新列rails g paperclip users image然後rake db:migrate它和新列現在在Users中。

接下來,我通過<%= f.file_field :image %>在表單中創建一個file_field,並將has_attached_file :image添加到Users模型。 裏面view,我使數據庫的一個循環打印出了名,並與<%= image_tag t.image.url %>

的名稱顯示,但圖像不是,它缺少的圖像。下面的代碼:

索引視圖:

<a href="show">To SHOW</a><br> 
    <%= form_for @add, :url => { :action => "them"}, :html => { :multipart => true} do |f| %> 
    Name: <%= f.text_field :name %><br> 
    Photo: <%= f.file_field :image %><br> 
    <%= f.submit "Add" %> 
    <% end %> 

顯示視圖:

<% @everything.each do |t| %> 
    <%= t.name %> 
    <%= image_tag t.image.url %> 
    <br><br><br> 
    <% end %> 

控制器:

class PagesController < ApplicationController 
     def index 
     @add = Users.new 
     end 

     def them 
     Users.create :name => params[:users][:name] 
     redirect_to :action => "index" 
     end 

     def show 
     @everything = Users.all 
     end 
    end 

users.rb的模型:

class Users < ActiveRecord::Base 
     attr_accessible :name 

     has_attached_file :image 
    end 

的routes.rb:

get "pages/index" 
    match "pages/them" => "pages#them", :via => :post 
    get "pages/show" 

我使用SQLite的專家個人檢查數據庫,這個名字是有,但所有的image_列(image_file_nameimage_content_typeimage_file_sizeimage_update_at)都只是空。

我錯過了什麼讓它工作?隨時索取更多信息。謝謝。

+1

也許如果你添加的照片在create方法,在'them'行動,它將被添加到記錄中...您給「名稱」賦予一個值 – 2014-10-30 08:20:38

+0

我檢查了回形針上的一些教程,發現沒有要添加到「他們」動作的代碼。你會建議我把他們的圖像添加到記錄中嗎? – 2014-10-30 08:23:40

回答

0

隨着Debadatt的幫助下,我找到了解決辦法,安裝imagemagick然後應用Users.create({:name => params[:users][:name], :image => params[:users][:image] })作爲Debadatt建議將做到這一點。

如果像Paperclip::Errors::NotIdentifiedByImageMagickError:錯誤時,只需添加gem "cocaine", "= 0.3.2"到的Gemfile和bundle install,它會下載或更新需要cocaine

0

試試這個

Users.create({:name => params[:users][:name], :image => params[:users][:image] }) 

關注軌道模型申報和命名約定。

用戶模型應該被命名爲用戶。它將在數據庫遷移後創建一個用戶表。

按照link

+0

它不工作,'名字'甚至沒有被添加到記錄。 – 2014-10-30 08:34:23

+0

您可以在提交表單後向我顯示您在控制檯中獲得的參數嗎? – Debadatt 2014-10-30 08:36:18

+0

遵循rails模型聲明和命名約定。 – Debadatt 2014-10-30 08:36:56

0

如果您正在使用設計進行驗證 - 你需要去application.rb中文件並添加:https://github.com/plataformatec/devise

before_action :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:update) << :avatar 
    end 
相關問題