我有一个博客的表格,我想有两个图片字段。一张图片是封面(显示),另一张图片将作为预览(索引)。我的表格看起来是这样的。
<%= 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
当我只有两个字段的时候,它的效果很好 image_path
(封面),但当我为新的字段添加了一个 homepagepic
,我得到一个 ROLLBACK
在验证时。
谁能帮我解决如何在同一个表单上通过两个独立的字段选择文件的问题,谢谢。
你提供的代码非常稀疏,如果能看到更多的代码会很有帮助(例如控制器和上传器)。
不过,我可以猜测一下。image_path
是Rails提供的一个现有的帮助方法(参见 https:/api.rubyonrails.orgclassesActionViewHelpersAssetUrlHelper.html#method-i-image_path。). 我完全不知道当你用这个作为表格字段的名称时会发生什么。也有可能是因为你把提交按钮声明为输入(我只见过和使用了 as: :button
对于 f.action :submit
).
所以总体来说,我会选择下面的方法。
cover_image
而另一个则是 preview_image
(这是你在帖子中描述的各自的目的,所以你应该给它们起相应的名字)button
并从你的模板中删除所有的噪音,并从最基本的开始:两个上传字段,没有其他的东西(见下面的示例代码--注意,我还没有测试,但它应该工作或非常接近工作测试每一步之后是否还能工作。如果你能写一个Capybara测试,就这么做--否则就手动测试。
如果你有问题,请随时提问。
<%= 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 %>
class Blog < ApplicationRecord
belongs_to :user
acts_as_taggable
mount_uploader :preview_image, BlogUploader
mount_uploader :cover_image, BlogcoverUploader
end
正如前面的海报所说,如果没有所有的拼图,很难调试你的代码。A ROLLBACK
是由于一个或多个验证失败而发生的。
任何时候你有一个 ROLLBACK
你可以加一个 !
至 create
或 update
方法被调用,ActiveRecord会抛出一个错误,告诉你为什么在对象上的 ROLLBACK
发生,而不是优雅地失败。
一旦你知道为什么你的对象没有持久化,你可以检查表单提交的控制器动作的参数。也许你忘了通过强参数将一个参数列入白名单?
• 使用 HTML 和 CSS 创建 6 个图标(2 行和 2 行),旁边有两行文字
• 添加 imaskjs with rails and hotwire stimulus 但它不起作用
• 在 Rails 上使用 find_or_initialize 5
• 是否有第三方平台可以托管大型图片库,然后使用 iframe 嵌入到我的网站中?
• 我们如何在 React Native 中点击并上传多张图片,我用过图像选择器,图像裁剪选择器,但做不到
• 在上传到Wordpress时,给所有图片添加 "图片-"后缀。
• 网格大小调整:tailwind CSS 和 Reactjs
• 如何使用 python/matplotlib 在 sankey 图中添加两个分离(未连接)的流?
• Rails 6 - 创建一个回调以验证输入的特定文本的问题。
• 如何在Mybatis(Java)中的实例映射中制作两个相同的内部类
• 我有一个与 C 编程相关的错误。我输入了一个 if/else 函数,但在输出中只有 else 函数可以打印 [关闭]