2013-06-08 3 views
0

Я пытаюсь создать нового пользователя и загрузить изображение с помощью скрепки. Он передает логин, адрес электронной почты и пароль в базу данных, но не детали фотографий. Может ли кто-нибудь увидеть, где я ошибаюсь? Я использую рельсы 3,06 и рубин 1.9.2paperclip не сохраняет фотографии в базе данных

Это из show.html.erb

<div id="pic"><%= image_tag @user.photo.url(:main) %></div> 

Это из user.rb

class User < ActiveRecord::Base 
    attr_accessible :photo 
    has_attached_file :photo, :styles => {:small => "70x70>", :main => "250x250>" }, 
       :url => "public/system/photos/:id/:style/:basename.:extension" 

Это форма, используемая при редактировании. html.erb, где он работает и new.html.erb, где он не

 <%= form_for @user, :html => {:multipart => true} do |f| %> 
     <div class="field"> 
     <%= f.label :login %><br /> 
     <%= f.text_field :login %> 
     </div> 
     <div class="field"> 
     <%= f.label :email %><br /> 
     <%= f.text_field :email %> 
     </div> 
     <div class="field"> 
     <%= f.label :password %><br /> 
     <%= f.text_field :password %> 
     </div> 
     <p> 
     <%= f.file_field :photo %> 
     </p> 
     <div class="actions"> 
     <%= f.submit %> 
    </div> 
    <% end %> 

Это от users_controller.rb

def create 
     @user = User.new 
     @user.login = (params[:user][:login]) 
     @user.email = (params[:user][:email]) 
     @user.password = (params[:user][:password]) 
     @user.photo_file_name = (params[:user][:photo_file_name]) 
     @user.photo_content_type = (params[:user][:photo_content_type]) 
     @user.photo_file_size = (params[:user][:photo_file_size]) 

И это терминальный вывод

работы POST "/ пользователи" для 127.0.0.1 в 2013-06-08 13:18:58 +0100 обработки на UsersController # создать в HTML Параметры: {"utf8" => "✓", "authenticity_token" => "4Qvx + aPv9fpOQYk7aAv5iupoBA8aPBYelcjQPh4aM2I =", "user" => {"login" => "meme", "email" => "[email protected]", «password» => «[FILTERED]», «photo» => #>}, «commit» => «Create User»} Пользовательская загрузка (1.1ms) SELECT «users». * FROM «пользователи пользователей« WHERE » "." id "= 1 LIMIT 1 Пользовательская нагрузка (0,5 мс) SELECT" users "." id "FROM" users "WHERE (" users "." login "= 'meme') LIMIT 1 Пользователь Load (0.3ms) SELECT «users». «Id» FROM «users» WHERE («users». «Email» = '[email protected]') LIMIT 1 AREL (0,9 мс) INSERT INTO "users" (" логин "," email "," password "," created_at "," updated_at "," photo_file_name "," photo_content_type "," photo_file_size ") VALUES ('meme', '[email protected]', 'meme', ' 2013-06-08 12: 18: 58.686143 ',' 2013-06-08 12: 18: 58.686143 ', NULL, NULL, NULL) [paperclip] Сохранение вложений.

+0

Got it. Мне нужно @ user.photo = (params [: user] [: photo]) – gleb

ответ

0

Мне кажется, что вы пытаетесь сделать слишком много для скрепки и в процессе, случайно минуя ее. Я хотел бы изменить создать действие на:

def create 
    @user = User.new params[:user] 
    if @user.save 
    ... 

В качестве примечания, методы нового, создавать и update_attributes предназначены для приема Params [:] пользователей, поэтому вам не нужно иметь семь строк атрибута модели код назначения.

Смежные вопросы