2010-12-11 2 views
1

Ich habe Büroklammer bekommen, um auf meinem System ohne ein Problem zu arbeiten. In dieser neuen App, die ich erstellt habe, kann ich aus irgendeinem Grund keine Büroklammer bekommen, um das Bild zu speichern, auch wenn die Protokolldatei dies anzeigt, wird sie auch nicht in der SQL-Datenbank angezeigt.Ruby 1.87 Rails 3.03 und Devise. Büroklammerbild wird nicht gespeichert, obwohl es besagt, dass es sich in der Protokolldatei befindet

Der einzige Unterschied, den ich habe, ist die Verwendung von Devise und ich frage mich, ob es einige zusätzliche Einstellungen gibt, die ich ändern muss.

Die Log-Datei sagt:

Started POST "https://stackoverflow.com/users/1" for 127.0.0.1 at Fri Dec 10 14:56:52 -0800 2010 

Verarbeitung von Userscontroller # update als HTML Parameter: { "commit" => "Update", "authenticity_token" => "JexxammsT + VPzqwbLr/YohuY4vcpBFdfVrOwDjDQEUo =", "utf8" => "✓", "id" => "1", "user" => {"avatar" => #, @ headers = "Inhalt-Disposition: form-data; name = \" user [avatar ] \ Dateiname = \ "Nice-Smile.jpg \" \ r \ nContent-Typ: image/jpeg \ r \ n ", @ content_type =" Bild/jpeg ", @ original_filename =" Nice-Smile.jpg " >}} User Load (3.1ms) SELECT "Benutzer". * FROM "Benutzer" WHERE ("Benutzer". "ID" = 1) LIMIT 1 Benutzer laden (0.5ms) SELECT "Benutzer". "ID" FROM "Benutzer" WHERE ("Benutzer". "E-Mail" = 'mrus [email protected] ') UND ("Benutzer" .id <> 1) LIMIT 1 [Büroklammer] Speichern von Anhängen. Weitergeleitet zu http://localhost:3000/users/1 Fertiggestellt 124ms

Gefunden 302 Schritte "/ Benutzer/1" für 127.0.0.1 am Fr 10. Dezember, indem sie als HTML Parameter Userscontroller # show 14.56.52 -0800 2010 Verarbeitung GET: { "id" => "1"} Benutzer laden (3,1 ms) SELECT "Benutzer". * FROM "Benutzer" WHERE ("Benutzer". "ID" = 1) LIMIT 1 CACHE (0.0ms) SELECT "Benutzer" . * FROM "Benutzer" WHERE ("Benutzer". "ID" = 1) LIMIT 1 Gerenderte Benutzer/_basic_info.html.erb (2.0ms) Gerenderte Layouts/_stylesheets.html.erb (5.2ms) Gerenderte Layouts/_header.html.erb (12.1ms) Gerenderte Layouts/_footer.html.erb (2,4ms) Gerenderte Benutzer/show.html.erb in Layouts/Anwendung (47.2ms) Abgeschlossen 200 OK in 167ms (Aufrufe: 62.2ms | Active: 6,6 ms)

Started "/avatars/small/missing.png" für 127.0.0.1 am Fr 10. Dezember 14.56.53 -0800 2010 GET

loszulegen „/ avatars/small/fehlend .png“für 127.0.0.1 am Fr., 10. Dez 14:56:53 -0800 2010

Action :: RoutingError (Keine Route entspricht "/avatars/small/missing.png"):

Hier ist mein Benutzercontroller:

class UsersController < ApplicationController 
    def home 
    @user = User.find(params[:id]) 
    end 

    def index 
    @user = User.all 
    @title = "All users" 
    end 

    def show 
    @user = User.find(params[:id]) 
    @title = current_user.first_name 
    end 

    def create 
    @user = User.new(params[:user]) 
    if @user.save 
     flash[:notice] = "Profile Updated" 
     redirect_to @user 
    else 
     render :action => 'new' 
    end 
    end 

    def update 
    @user = User.find(params[:id]) 
    if @user.update_attributes(params[:product]) 
     flash[:notice] = "Profile Updated" 
     redirect_to @user 
    else 
     render :action => 'edit' 
    end 
    end 


end 

Und hier ist mein User-Modell:

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :lockable, :timeoutable and :activatable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :password_confirmation, :first_name, :last_name, :avatar 
    attr_accessible :bio, :sex, :birthday, :facebook, :twitter, :hometown, :current_city, :interested_in, :looking_for 

    validates :first_name, :presence => true, 
        :length => { :maximum => 50 } 

    validates :last_name, :presence => true, 
        :length => { :maximum => 50 } 

    has_attached_file :avatar, :styles => { :thumb => "50x50#", 
              :small => "150x150>", 
              :medium => "300x200>", 
              :large => "600x600>" }, 
        :url => "/assets/users/:id/:basename/:style.:extension", 
        :path => ":rails_root/public/assets/users/:id/:basename/:style.:extension" 


    validates_attachment_size :avatar, :less_than => 5.megabytes 
    validates_attachment_content_type :avatar, :content_type => ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'] 


end 

ich viele Dinge immer und immer wieder versucht, aber nicht sicher, warum die Datei nicht gespeichert wird. Danke für jede Hilfe im Voraus.

+0

Bitte bearbeiten Sie Ihre Frage und formatieren Sie Ihren Code. –

+0

haben Sie multipart in Ihrem Formular? – iain

Antwort

2

Sie setzen das Tag html => {: multipart => wahr} in Ihrem Formular?

Beispiel:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put, :multipart => true }) do |f| %> 
    <%= devise_error_messages! %> 
    <div class="blockForm"> 
    <p> 
     <%= f.label :name %> 
     <%= f.text_field :name %> 
    </p> 

    <p> 
     <%= f.label :email %> 
     <%= f.text_field :email %> 
    </p> 
    <p> 
     <%= f.label :avatar %> 
     <%= f.file_field :avatar %> 
    </p> 
    <p> 
     <%= f.label :password %> 
     <%= f.password_field :password %> 
     <span>Deixe em branco caso não queira alterar a senha</span> 
    </p> 

    <p> 
     <%= f.label :password_confirmation %> 
     <%= f.password_field :password_confirmation %> 
    </p> 

    <p> 
     <%= f.label :current_password %> 
     <%= f.password_field :current_password %> 
     <span>Coloque a sua senha para salvar as alterações</span> 
    </p> 
    </div> 
    <p><%= f.submit "Atualizar", :class => 'button' %></p> 
<% end %> 
0

nicht sicher, ob es im Zusammenhang, sondern nur aufgefallen, die Linie

if @user.update_attributes(params[:product]) 

in Ihrem Code. War das der Grund?