Новое в Rails / paperclip - Paperclip не спасет - PullRequest
3 голосов
/ 11 января 2011

Я очень новичок в программировании и пытаюсь использовать скрепку, чтобы добавить фотографию пользователя в мои записи. Записи могут быть созданы из формы добавления новой записи без строки <% = f.file_field: photo%> и перенаправляют правильно и сохраняют запись в базе данных. Однако, когда он включен при сохранении, он хочет перенаправить на create.html.erb вместо пути пользователя и не сохраняет новую запись. Это также не отображает никаких ошибок. Я обновил таблицу пользователей полями photo_file_name, photo_content_type и: photo_file_size. Кроме того, я запускаю Windows, если это поможет.

Модель:

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 # create (для 127.0.0.1 в 2011-01-12 22:05:56) [POST] Параметры: { "Пользователь" => { "фото" => #, "Имя пользователя" => "nghjhg", "password" => "ghjghj"}, "commit" => "Сохранить изменения», "Authenticity_token" => "IlacpnqsC / Ij + 41bx8tN4obOWPgirMx810l / WvohN68 ="} [скрепка] определить формат% wx% h "C: /Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png [0]" 2> NUL [скрепка] Ошибка была получен при обработке:

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

C: /Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png не распознается «идентифицировать» команда.> Рендеринг шаблона в макеты / рендеринг приложений пользователи / создание Завершено в 157мс (Просмотр: 4, БД: 0) | 200 ОК [http://localhost/users]

1 Ответ

3 голосов
/ 12 января 2011

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

EDIT

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

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

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

РЕДАКТИРОВАТЬ 2

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

...