2011-01-11 4 views
3

Я очень новичок в программировании, и я пытаюсь использовать paperclip, чтобы добавить фотографию пользователя в мои пользовательские записи. Записи могут быть созданы из новой формы записи без строки <% = f.file_field: photo%> и перенаправлять правильно и сохраняет запись в базе данных. Однако, когда он включен в save, он хочет перенаправить на create.html.erb вместо пути пользователя и не сохраняет новую запись. Он также не отображает никаких ошибок. Я обновил таблицу users с полями photo_file_name, photo_content_type и: photo_file_size. Кроме того, я запускаю окна, если это любая помощь.New to Rails/paperclip - Paperclip wont save

Модель:

class User < ActiveRecord::Base 
    has_many :venues 
    has_many :reviews 
    has_attached_file :photo, 
    :styles => { 
     :medium => "300x300>", 
     :thumb => "100x100>" } 
end 

Контроллер:

class UsersController < ApplicationController 

    def index 
    @users = User.all 
    end 

    def new 
    @user = User.new 
    end 

    def create 
    @user = User.create(params[:user]) 
    if @user.save 
     flash[:notice] = 'User added' 
     redirect_to users_path 
    else 
     @user.save 
    end 
    end 

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

Вид:

<% form_for (@user, :html => { :multipart => true }) do |f| %> 

    <p>username: <br> 
    <%= f.text_field :username %></p> 

    <p>password: <br> 
    <%= f.text_field :password %></p> 

    <p>photo: <br> 
    <%= f.file_field :photo %></p> 

    <%= submit_tag %> 
<% end %> 

Любая помощь очень ценится!

Что показано в журнале развития:

Обработка UsersController # создать (для 127.0.0.1 в 2011-01-12 22:05:56) [POST] Параметры: { "пользователь" = > {"photo" => #, "username" => "nghjhg", "password" => "ghjghj"}, "commit" => "Сохранить изменений", "authenticity_token" => "IlacpnqsC/iJ + 41bx8tN4obOWPgirMx810l/WvohN68 = "} [paperclip] ident -format% wx% h " C: /Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png [0] " 2> NUL [скрепка ] Ошибка была получена при обработке:

С:. /Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png не распознается команды 'идентифицировать'> [скрепку] определить -format % WX% H "C: /Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png [0]" 2> NUL [скрепку] ошибка была полученные при обработке:

С: /Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png не распознается командой «ident» .> Шаблон рендеринга в пределах макеты/приложение Рендеринг пользователей/создать Завершено в 157ms (Вид: 4, DB: 0) | 200 OK [Http: // Localhost/пользователи]

ответ

3

Использование :avatar в документации для скрепки это всего лишь пример. В вашем случае это должно быть :photo. Вам нужно будет изменить это как в модели, так и в файлах вида.

EDIT

Я только заметил эту часть вашего контроллера:

if @user.save 
    flash[:notice] = 'User added' 
    redirect_to users_path 
else 
    @user.save # <<< here 
end 

Это не имеет никакого смысла. Если первое сохранение завершится неудачно (возвращает false), вы просто пытаетесь его снова, не меняя ничего?Я подозреваю, что строка должна быть render :action => :new.

EDIT 2

Ваши журналы показывают, что ваша команда identify не может распознать .png файлы. Либо это, либо у вас нет команды identify. Вы установили ImageMagick? Если да, то как?

+0

Спасибо за ответ, только что заметил, что я допустил ошибку в моем вопросе. Я перенесла таблицу User с полями avater_file_name, avater_content_type и avatar_file_size, а не с фотографией, извините за это. Теперь он возвращает «User model missing required attr_accessor для« photo_file_name ». Я переделал с «фото» и обратно, чтобы не сохранять. – Dave

+0

Erm, вы изменили имена столбцов таблицы, чтобы использовать 'avatar_ *' вместо 'photo_ *', но вы также обновили свой вопрос, чтобы использовать 'has_attached_file: photo' вместо' has_attached_file: avatar'. Подумайте об этом! Что он? – noodl

+0

Простите, что это была ошибка в моем первоначальном вопросе, я изменил все на photo_ в таблице User, и моя модель, контроллер и вид выглядят как выше. – Dave