2011-02-06 57 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