Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中使用html表单上传图像_Ruby On Rails - Fatal编程技术网

Ruby on rails 在Rails中使用html表单上传图像

Ruby on rails 在Rails中使用html表单上传图像,ruby-on-rails,Ruby On Rails,我目前正在rails中进行图像上传,但遇到了一些问题。我有一个表单,它创建了一个任务,并有一个用于上传图像的列。但是,当我检查终端时,表单没有发送参数中的图像,因此每当我创建新对象时,它都不包含图像。我正在使用carrierwave gem有人帮我吗 我是新手,对Ruby表单的使用感到困惑,所以我现在倾向于使用HTML标记 查看(我没有包括所有代码,否则很难阅读) 很抱歉,我不能发表评论,所以我将尝试作为答案。。。 您是否生成了图像上传程序? 您是否在您的模型中添加了mount\u upload

我目前正在rails中进行图像上传,但遇到了一些问题。我有一个表单,它创建了一个任务,并有一个用于上传图像的列。但是,当我检查终端时,表单没有发送参数中的图像,因此每当我创建新对象时,它都不包含图像。我正在使用
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