我是使用paperclip通过此链接http://railscasts.com/episodes/134-paperclip
上传图像的文件字段,我想将上传的图像存储在db中:
我正在通过以下命令
在我的用户模型名称photo
中生成回形针
rails generate paperclip user photo
rake db:migrate
我在用户模型中添加以下行:
has_attached_file :photo,:storage => :database,
:styles => { :small => "90x90>" },
:url => "/assets/users/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/users/:id/:style/:basename.:extension"
validates_attachment_presence :photo
validates_attachment_size :photo, :less_than => 5.megabytes
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png', 'image/jpg']
下面是我的观看页面:
<%= form_for(:UploadImage, :html => { :id => "uploadimage", :multipart => true }) do |f| %>
<table width="100%">
<% @user_basic.each do |ub| %>
<tr>
<td width="45%" align="right">
<%= image_tag ub.photo.url(:small) %>
</td>
<td align="left">
<%= f.file_field :photo %>
</td>
</tr>
<% end %>
</table>
<table width="92%">
<tr>
<td align="center">
<div class="button" style="margin-right:60px;">
<%= f.submit "Next", { :class => "buttonSearch"} %>
</div>
</td>
</tr>
</table>
<% end %>
是我的控制者:
def create
@blah = params[:photo]
@user_basic=User.find(current_user.id)
#user = User.find_by( photo_file_name: current_user.photo_file_name )
render 'new'
end
但是我的图片没有存储在db中。为什么?请建议我,等待你的回复。 感谢
答案 0 :(得分:0)
要实际上传文件,rails用户需要具有上传目录的写权限。
如果您知道运行Rails服务器的用户,
chown -R <rails_user>:<rails_user> <rails_root>/public/assets/users/
如果您不知道运行Rails服务器的用户,
chmod -R a+w <rails_root>/public/assets/users/
答案 1 :(得分:0)
首先为模型创建条目,它将自动上传并存储文件信息
在UserController #create
中添加它@user = User.new(params.require(:UploadImage).permit(:photo))
@user.save
CMIIW
答案 2 :(得分:0)
您没有尝试更新UploadImage
控制器中的用户模型,因此未包含图片的原因。
我不确定你为什么需要一个不同的控制器; photo
只是User
模型的另一个属性,就像用户名,密码,电子邮件等一样。
据推测,您已经有一个有效的UsersController
用于创建用户的索引,新建,创建等操作?鉴于您已将photo
添加为User
模型的强制属性,您应该会发现现有的UsersController现在无法添加新用户,因为无法添加照片。
为了帮助您实现目标,您只需添加:
<%= f.file_field :photo %>
到您用户的新(和编辑)视图,按照您当前视图的设置multipart: true
进行设置。
然后在您的强参数中加入:photo
。例如......
class UsersController < ApplicationController
...
def new
@user = User.new
end
def create
@user = User.new(user_params)
...
end
private
def user_params
params.require(:user).permit(:photo) # plus whatever other user attributes you have
end
end
答案 3 :(得分:0)
如果您使用的是Rails 4,则需要使用strong params
将数据传递给模型(如果您要创建新的User
记录),并且如{ {1}},你必须保存数据(你当前没有这样做)
以下是一些应该有效的代码:
Teguh Syahmar