Ruby on rails 使用两个字段在rails中上载2个图像

Ruby on rails 使用两个字段在rails中上载2个图像,ruby-on-rails,Ruby On Rails,我有一个博客的形式,我想有两个图像字段。一个图像是显示中的封面,另一个图像将作为索引中的预览。 我的表格如下: <%= semantic_form_for @blog, :html => { :multipart => true } do |f| %> <%= t :Choose_File_for_cover %> <%= f.file_field :image_path, id: "avatar-upload2", required: true %&g

我有一个博客的形式,我想有两个图像字段。一个图像是显示中的封面,另一个图像将作为索引中的预览。 我的表格如下:

<%= semantic_form_for @blog, :html => { :multipart => true } do |f| %>
<%= t :Choose_File_for_cover %> <%= f.file_field :image_path, id: "avatar-upload2", required: true %>
<img id="img_prev3" width="100%" height=200 src="#" alt="your image" class="img-thumbnail hidden"/>

<%= t :Choose_File_for_homepage %> <%= f.file_field :homepagepic, id: "avatar-upload3", required: true %>
<%= f.hidden_field :image_path_cache %>
<%= f.hidden_field :homepagepic_cache %>
<%= f.actions do %>
<%= f.action :submit, :as => :input %>
<% end %>
<% end %>
我的模型看起来像:

class Blog < ApplicationRecord
  belongs_to :user
  acts_as_taggable
  mount_uploader :image_path, BlogUploader
  mount_uploader :homepagepic, BlogcoverUploader
end
当我只有封面上的图像路径时,它工作得很好,但是当我为homepagepic添加一个新字段时,我会在验证时回滚

有人可以帮助我如何选择文件,通过两个不同的领域在同一个表格请。
谢谢你

你提供的代码非常稀少,如果能多看一点,例如控制器和上传器,那会很有帮助

然而,我可以大胆猜测:image_path是Rails提供的现有辅助方法。我完全不知道当您使用它作为表单字段的名称时会发生什么。这也可能是因为您将submit按钮声明为我只见过的输入,并用作f.action:submit的::按钮

因此,总体而言,我将选择以下方法:

重命名上传字段以覆盖图片,另一个用于预览图片,这是您在帖子中描述的各自用途,因此您应该相应地命名它们 将submit更改为a按钮,删除模板中的所有杂音,并从最简单的部分开始:两个upload字段,没有其他内容请参见下面的示例代码–注意,我还没有测试过它,但它应该可以工作,或者非常接近工作状态 之后,开始添加噪声,即翻译、缓存字段等。 测试每一步后它是否仍然有效。如果您可以编写一个水豚测试,那么就这样做——否则就手动测试它

如果你有问题,请随时提问

类Blog您提供的代码非常稀疏,如果能看到更多的代码,例如控制器和上传程序,将非常有帮助

然而,我可以大胆猜测:image_path是Rails提供的现有辅助方法。我完全不知道当您使用它作为表单字段的名称时会发生什么。这也可能是因为您将submit按钮声明为我只见过的输入,并用作f.action:submit的::按钮

因此,总体而言,我将选择以下方法:

重命名上传字段以覆盖图片,另一个用于预览图片,这是您在帖子中描述的各自用途,因此您应该相应地命名它们 将submit更改为a按钮,删除模板中的所有杂音,并从最简单的部分开始:两个upload字段,没有其他内容请参见下面的示例代码–注意,我还没有测试过它,但它应该可以工作,或者非常接近工作状态 之后,开始添加噪声,即翻译、缓存字段等。 测试每一步后它是否仍然有效。如果您可以编写一个水豚测试,那么就这样做——否则就手动测试它

如果你有问题,请随时提问

类Blog正如前面的海报所说,如果没有所有的拼图,很难调试代码。由于一个或多个验证失败,正在发生回滚

任何时候你有一个回滚,你可以添加一个!对于正在回滚的对象调用的create或update方法,ActiveRecord将抛出一个错误,告诉您为什么会发生回滚而不是正常失败


一旦知道了对象没有持久化的原因,就可以检查表单提交到的控制器操作的参数。也许您忘记了通过强参数将参数列为白名单?

正如前一张海报所说,如果没有所有的拼图,很难调试代码。由于一个或多个验证失败,正在发生回滚

任何时候你有一个回滚,你可以添加一个!对于正在回滚的对象调用的create或update方法,ActiveRecord将抛出一个错误,告诉您为什么会发生回滚而不是正常失败


一旦知道了对象没有持久化的原因,就可以检查表单提交到的控制器操作的参数。也许您忘记了通过强参数将参数列为白名单?

Hi@FrankyDoul,建议您在环境中添加更多细节,例如您使用的gems版本、控制台中出现的错误等。Hi@FrankyDoul,建议您在环境中添加更多细节,例如您使用的gems版本,控制台中出现的错误,等等。嗨,克莱门斯,我就是这么做的,没什么,它成功了!非常感谢。嗨,克莱门斯,我就是这么做的,没什么,而且成功了!非常感谢。
<%= semantic_form_for @blog, html: { multipart: true } do |f| %>
  <%= f.file_field :cover_image %>
  <%= f.file_field :preview_image %>

  <%= f.actions do %>
    <%= f.action :submit, as: :button %>
  <% end %>
<% end %>