我正在尝试创建新用户并使用回形针上传图片。它将登录,电子邮件和密码传递给数据库,但不传递照片详细信息。任何人都可以看到我错在哪里?我使用rails 3.06和ruby 1.9.2
这是来自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"
这是在edit.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])
这是终端输出
在2013-06-08 13:18:58 +0100开始为127.0.0.1发布“/ users” UsersController处理#create as HTML 参数:{“utf8”=&gt;“✓”,“authenticity_token”=&gt;“4Qvx + aPv9fpOQYk7aAv5iupoBA8aPBYelcjQPh4aM2I =”,“user”=&gt; {“login”=&gt;“meme”,“email”=&gt;“ me@me.com“,”“password”=&gt;“[FILTERED]”,“photo”=&gt;#&gt;},“commit”=&gt;“创建用户”} 用户负载(1.1ms)SELECT“users”。* FROM“users”WHERE“users”。“id”= 1 LIMIT 1 用户负载(0.5ms)SELECT“users”。“id”FROM“users”WHERE(“users”。“login”='meme')LIMIT 1 用户负载(0.3ms)SELECT“users”。“id”FROM“users”WHERE(“users”。“email”=“me@me.com”)LIMIT 1 AREL(0.9ms)INSERT INTO“users”(“login”,“email”,“password”,“created_at”,“updated_at”,“photo_file_name”,“photo_content_type”,“photo_file_size”)VALUES('meme',' me@me.com','meme','2013-06-08 12:18:58.686143','2013-06-08 12:18:58.686143',NULL,NULL,NULL) [paperclip]保存附件。
答案 0 :(得分:0)
在我看来,你正试图为回形针做太多,并且在这个过程中不小心绕过它。我会将创建操作更改为:
def create
@user = User.new params[:user]
if @user.save
...
作为旁注,new,create和update_attributes方法旨在接收params [:user],因此您不必拥有七行模型属性赋值代码。