2011-02-06 52 views
0

我很新的軌道,並試圖讓回形針爲我的網站上的用戶配置文件的工作。我在我的gemfile和bundle中安裝了回形針gem。我用的是有一個問題:has_attached_file所以然後我用「Rails插件安裝的github /路徑/到/ paperclip.git」並重新啓動的WEBrick。在那之後一切似乎就呈現我的新形式,並給了我上傳文件的選項是工作。Rails的3&回形針問題

當我嘗試和照片上傳到用戶配置文件,它只是把我帶回到該用戶的頁面沒有告訴我,它已成功更新並沒有顯示出新上傳的圖像。它會調整名稱或電子郵件地址,如果你改變這些。它看起來並不像它其實是把圖像分成即在Github上的自述回形針列出的路徑。這裏有一些配置文件,我沒有看到?

我跑了 '軌道產生回形針用戶照片' 及以下是一些相關的代碼:

從型號/ user.rb

class User < ActiveRecord::Base 
    attr_accessible :name, :email 

    email_regex = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 
    validates :name, :presence => true, 
        :length  => { :maximum => 50 } 
    validates :email, :presence => true, 
        :format  => { :with => email_regex }, 
        :uniqueness => { :case_sensitive => false } 

    #code below tells rails that our users have photos 
    has_attached_file :photo 
end 

從視圖/用戶/ show.html.erb:

<b>Username: </b><%= @user.name %> 
<p><b>Email Address: </b><%= @user.email %></p> 
<p><b>Avatar: </b><% if @user.photo? %><%= image_tag @user.photo.url %><% else %>No  Photo Uploaded!<% end %></p> 

從視圖/用戶/ _form.html.erb

<% form_for :user, @user, :url => user_path, :html => { :multipart => true } do |f| %> 
    <p> 
    <%= f.label :name.to_s << ': ' %> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label 'Email Address:' %> 
    <%= f.text_field :email %> 
    </p> 

    <p> 
    <%= f.label :Avatar.to_s << ': ' %> 
    <%= f.file_field :photo %> 
    </p> 
    <p> 
    <%= f.submit 'Save' %> 
    </p> 
<% end %> 

編輯:添加控制器代碼: 從控制器/ users_controller.rb:

class UsersController < ApplicationController 

    before_filter :authenticate, :except => [:index] 

    def new 
    @user = User.new 
    end 

def create 
    @user = User.new(params[:user]) 

    respond_to do |format| 
     if @user.save 
     format.html { redirect_to(@user, :notice => 'User was successfully created.') } 
     **code removed for brevity** 
     end 
end 
end 

回答

0

我已經修復了這個問題。這個問題似乎已經與我用的是新的用戶和編輯用戶屏幕上的部分的_form一個問題。我在原始問題中留下了不良的模板代碼,我將在此發佈固定代碼。 :user和:url =>值被刪除。

從/views/user/_form.html.erb

<% form_for @user, :html => { :multipart => true } do |f| %> 
    <p> 
    <%= f.label :name.to_s << ': ' %> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label 'Email Address:' %> 
    <%= f.text_field :email %> 
    </p> 

    <p> 
    <%= f.label :Avatar.to_s << ': ' %> 
    <%= f.file_field :photo %> 
    </p> 
    <p> 
    <%= f.submit 'Save' %> 
    </p> 
<% end %> 
0

一些問題:你rails generate paperclip user photo後運行rake db:migrate?在您的控制器中,您是否實際上有一個show方法來加載保存的用戶並顯示照片?

還要顯示:notice消息,您需要將其添加到您的應用程序模板<%= flash[:notice] =>的某處。

+0

我跑耙分貝:遷移到創建額外的列。 def show @user = User.find(params [:id]) - 這是我在用戶控制器中的show動作。 結束 – 2011-02-07 00:21:03