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

时间:2018-09-11 08:44:08

标签: ruby-on-rails

我目前正在Rails中进行图像上传,但是遇到了一些问题。我有一个创建任务的表单,并具有用于上载图像的列。但是,当我检查终端时,表单没有在参数中发送图像,因此,每当我创建一个新对象时,它都不会包含图像。我正在使用carrierwave gem有人帮我吗?。

我是新手,对使用Ruby表单感到很困惑,因此目前我倾向于使用HTML标签。

查看(我没有提供所有代码,否则将很难阅读)

<form id="new_form" name="task" role="form" enctype="multipart/form-data">
  <input type="file" name="avatar" class="form-control" id="avatar" accept="image/*">
  <input type="submit" class="btn btn-success" id="submit">
</form>

控制器

def create
    @item = item.new(name: params[:name],
                     avatar: params[:avatar])
    @item.save
end

1 个答案:

答案 0 :(得分:0)

对不起,我无法发表评论,因此我将尝试作为答案... 您是否生成了图片上传器? 您是否在模型中添加了mount_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