Ruby on rails 在Rails中使用html表单上传图像
我目前正在rails中进行图像上传,但遇到了一些问题。我有一个表单,它创建了一个任务,并有一个用于上传图像的列。但是,当我检查终端时,表单没有发送参数中的图像,因此每当我创建新对象时,它都不包含图像。我正在使用Ruby on rails 在Rails中使用html表单上传图像,ruby-on-rails,Ruby On Rails,我目前正在rails中进行图像上传,但遇到了一些问题。我有一个表单,它创建了一个任务,并有一个用于上传图像的列。但是,当我检查终端时,表单没有发送参数中的图像,因此每当我创建新对象时,它都不包含图像。我正在使用carrierwave gem有人帮我吗 我是新手,对Ruby表单的使用感到困惑,所以我现在倾向于使用HTML标记 查看(我没有包括所有代码,否则很难阅读) 很抱歉,我不能发表评论,所以我将尝试作为答案。。。 您是否生成了图像上传程序? 您是否在您的模型中添加了mount\u upload
carrierwave gem
有人帮我吗
我是新手,对Ruby表单的使用感到困惑,所以我现在倾向于使用HTML标记
查看(我没有包括所有代码,否则很难阅读)
很抱歉,我不能发表评论,所以我将尝试作为答案。。。 您是否生成了图像上传程序? 您是否在您的模型中添加了
mount\u uploaders:images,ImageUploader
?
你的表格呢?
你能告诉我们你是怎么写的吗?
我相信应该是这样的
# View
<%= form_for @task, html: { multipart: true } do |f| %>
<%= f.text_field :some_title %>
<%= f.file_field :images %>
<%= f.submit "Create" %>
<% end %>
# Controller
## Action
def create
@item = Item.new(item_params)
params[:item]['avatar'].each do |avatar|
@item.avatar = avatar
@item.save
end
end
private
def items_params
params.require(:item).permit(:title, {avatars: []})
end
#查看
#控制器
##行动
def创建
@item=item.new(item_参数)
参数[:项]['avatar']。每个都有| avatar|
@item.avatar=化身
@item.save
结束
结束
私有的
定义项目参数
参数require(:item).permit(:title,{avatars:[]})
结束
您是否创建了一个上传器
并将该列装载到上传器
中?是的,我在我的模型中添加了装载上传器:阿凡达,阿凡达上传器
,可以在我的应用程序中看到上传器文件夹,在文件夹内,我有阿凡达上传器.rb
,task\u image\u uploader.rb
在提交表单时使用服务器日志中出现的参数更新您的问题。是的,我在我的模型中添加了mount\u uploader:avatar,AvatarUploader
,可以在我的应用程序中看到uploaders
文件夹,在文件夹内,我有avatar\u uploader.rb
,task\u image\u uploader.rb
您能提供更多的代码吗?你在你的强参数里放了什么?我写的表格和我写的一样。我需要将表单更改为那样吗?我使用的是html表单,这是否意味着我不能使用carrierwave
?我是否需要将我的表单转换为那样的
?您应该使您的表单看起来像@NEL提到的那样,并且在控制器中,在提交表单时检查参数中的内容。
def create
@item = item.new(name: params[:name],
avatar: params[:avatar])
@item.save
end
# View
<%= form_for @task, html: { multipart: true } do |f| %>
<%= f.text_field :some_title %>
<%= f.file_field :images %>
<%= f.submit "Create" %>
<% end %>
# Controller
## Action
def create
@item = Item.new(item_params)
params[:item]['avatar'].each do |avatar|
@item.avatar = avatar
@item.save
end
end
private
def items_params
params.require(:item).permit(:title, {avatars: []})
end