回形针、多个附件和验证

2024-01-03

有人有 Rails 3 的多个附件在多部分表单上进行验证的示例吗?我一直在努力让它永远工作(并且找到了我能找到的每一篇博客文章和消息,但没有一个涵盖这种情况,并且文档根本​​没有帮助)。

第一个问题是大多数示例都使用“new_record?”在视图模板中,但是当验证失败时,这总是在新/创建序列中返回 true,因为没有保存模型实例(因此没有“id”值)。因此,如果您从 5 个模型实例/文件输入开始并上传一个文件,那么当您重新渲染新视图时,现在会显示 6 个文件输入,并且“除非”子句会因同样的原因而失败,并且不会显示缩略图。

我想保留上传文件的链接(我知道这是可能的——它们位于临时目录中),同时向用户显示其他必填字段的验证错误。

某个地方一定有人有这个与回形针一起工作。 ;)


我使用的方式:

我的房产有很多照片(以防 10 张)。转到代码:

在属性控制器中:

 def new
    @search = Property.search(params[:search])
    @property = Property.new
    10.times { @property.photos.build }    

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @property }
    end
  end

  # GET /properties/1/edit
  def edit
    @search = Property.search(params[:search])
    @property = Property.find(params[:id])

    # Se o usuário atual for dono da propriedade
    if current_user.id == @property.user_id
        @photos = Photo.where("property_id = ?", @property.id)
        @N = @photos.count
        @N = 10-@N      
        @N.times { @property.photos.build }
    else
        render :action => "show"
    end

  end

10.times“渲染”视野中照片视野的10倍。在编辑形式时,只出现照片字段提升。 例如: 第一次我上传了 3 张照片,然后如果我想上传更多照片,只会出现 7 个字段。


在属性模型中我有:

class Property < ActiveRecord::Base
    attr_accessible :photos_attributes, :logradouro, :complemento, :wc, :negocio, :cep, :vagas, :valor, 
    :quartos, :uf, :area, :bairro, :suites, :salas, :numero, :cidade, :descricao,
    :status, :tipoImovel
    has_many :photos
    accepts_nested_attributes_for :photos, :allow_destroy => true

end

这允许上传照片。


照片型号:

class Photo < ActiveRecord::Base
  belongs_to :property    

  has_attached_file :photo, :styles => { :small => "100x100>", :medium => "530>x530", :large => "800x800>" }
  validates_attachment_presence :photo
  validates_attachment_size :photo, :less_than => 500.kilobytes
end

在我的部分表格中:

<div id="new_up">            
            <%= f.fields_for :photos do |p| %>
                <% if p.object.new_record? %>
                    <p><%= p.file_field :photo %>
                       <%= p.radio_button :miniatura, true -%>
                    </p>
                    <% end %>
            <% end %>
          </div>

         <div id="old_up">
            <h4>Imagens Atuais</h4>
            <% f.fields_for :photos do |p| %>   
                <% unless p.object.new_record? %>   
                    <div style="float: left;">
                        <%= p.radio_button :miniatura, true -%>
                        <%= link_to image_tag(p.object.photo.url(:small)), p.object.photo.url(:original) %>
                        <%= p.check_box :_destroy %>            
                    </div>  
                <% end %>
           <% end %>
         </div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

回形针、多个附件和验证 的相关文章

随机推荐

  • 导航栏隐藏不工作 IOS

    大家好 我是 iOS 开发新手 我有一个主屏幕 导航栏隐藏 从那里我使用后转导航到另一个视图 但是当我单击返回时 它在主屏幕上显示导航栏 这是我的问题描述 在主屏幕 onviewload 中我正在做 self navigationContr
  • 将 docker-compose.yml 文件转换为 kubernetes

    我正在使用运行以下命令的 kompose 将 docker compose 文件转换为 kubernetes kompose 转换 f docker compose yml to kubernetes image yaml 命令完成后 输出
  • Python 2 中 dict.items() 和 dict.iteritems() 有什么区别?

    之间是否存在任何适用的差异dict items http docs python org library stdtypes html dict items and dict iteritems http docs python org li
  • Vim:在视觉模式下选择文本块的更快方法

    I have been using vim for quite some time and am aware that selecting blocks of text in visual mode is as simple as SHIF
  • 在 Ubuntu Server 16.04 上安装 CouchDB 2.1

    有谁知道如何在 Ubuntu Server 16 04 上安装 CouchDB 手册中的CouchDB 文档 http docs couchdb org en 2 1 0 install unix html似乎被打破了 一个简单的apt g
  • 同一台计算机上的两个 GitHub 帐户

    首先 我知道这个问题已经被问过并回答了好几次 但是我找到的所有解决方案都不起作用 任务非常简单 我有两个 GitHub 帐户 一个是个人帐户 第二个是商业帐户 我尝试使用一些配置 但都是这样的 Host github com persona
  • 使用“scale_x_log10”时,如何将“geom_text”准确映射到“geom_bin2d”?

    关于如何标记计数的一个很好的答案geom bin2d 可以在这里找到 使用 R 获取热图中 bin 的计数 https stackoverflow com questions 28771018 getting counts on bins
  • 什么是全球交易?

    JSR 907 JTA 1 2定义 全局事务 术语 UserTransaction begin 方法启动一个全球交易和 将事务与调用线程关联起来 这意味着什么 是最外面的事务还是什么 基本上 本地事务和全局事务之间的区别在于资源限制 全局事
  • MVC 区域不渲染 _Layout

    我有 NET CORE 2 2 的 MVC 项目我在项目中添加了区域 它在本地计算机中可以正常工作 当应用程序成功发布时 我使用 Azure Devops 设置 CI CD 管道 我注意到我的区域渲染不正确 下面的内容来自 azure 网站
  • 如何在 Excel 中使用 VBA 创建和填充 ActiveX 组合框。

    我在尝试在 Excel 的 vba 中创建并填充 ActiveX 组合框时遇到问题 下面的代码在作为两个单独的宏运行时有效 但是当我尝试将两者放在一起时 会创建一个空的组合框 谁能告诉我这是为什么以及如何克服这个问题 提前致谢 杰威 Sub
  • Nvidia NPP nppiFilter 在与 2d 内核卷积时产生垃圾

    Nvidia 性能基元 NPP http developer nvidia com cuda nvidia performance primitives提供了nppiFilter用于将用户提供的图像与用户提供的内核进行卷积的函数 对于一维卷
  • 在 Debian Squeeze 上升级 phpmyadmin(和其他软件包)

    我刚刚使用 Debian Squeeze 最新稳定版本 6 0 4 设置了一个新的虚拟机 我想要一个网络服务器 所以我安装了常用的 apache php5 mysql phpmyadmin 等 一切都很顺利 一切正常 我的问题是关于升级包的
  • 在列表中查找元素的Scheme 函数是什么?

    我有一个元素列表 a b c 我想查找其中是否有 真或假 x 例如 其中 x 可以是 a 或 d 有为此的内置函数吗 如果您需要使用内置等价运算符之一进行比较 您可以使用memq memv or member http www scheme
  • AngularJS:自定义迭代/数据转换和分组...当简单的 ng-repeat 无法解决问题时

    还是这个问题Angular js 更复杂的条件循环 https stackoverflow com q 15943193 301596但我觉得这个问题的答案是正确的 所以我接受了 因此 让我比在原来的问题中更详细地阐述 我正在努力得到这个
  • 如何意图进入特定的选项卡片段?

    有两个活动 MainActivity 和 LoginActivity 我也有一个Fragment 名称是TabFragment 带有TabLayout 它的父级是MainActivity 我如何从我的登录活动中意图进入特定的 TabFrag
  • 如何在 Excel 中将 DocumentProperty 添加到 CustomDocumentProperties?

    我正在尝试将 DocumentProperty 添加到 CustomDocumentProperties 集合中 代码如下 Sub testcustdocprop Dim docprops As DocumentProperties Dim
  • 在管道中使用 PowerShell 任务 Sysprep Azure VM

    我的 dotNET 应用程序是通过构建管道构建的 使用 Windows 托管代理 在随后的发布管道中 我配置了一个 16GB Win2016 VM 启用 RDP HTTP HTTPS WinRM 和 SSH 我将在其中配置手动 RDP 此处
  • 我应该如何绑定到 Ember 视图中的窗口函数?

    我有一个 mixin 它会在页面调整大小时自动重新计算并设置 div 的高度 它可以工作 但在我看来 绑定到 jQuery 事件并在每次调用时手动触发 Ember 事件似乎很愚蠢 有没有办法直接在 Ember 中绑定到窗口事件 我有一个简化
  • 将 Facebook Graph API 日期转换为 UNIX 时间戳

    如何将 Facebook Graph API 日期转换为 UNIX 时间戳 Facebook 最近添加了一项功能 其中日期 时间将以 Unix 时间戳格式返回 只需添加date format U查询参数以结束您的图形调用 例如 https
  • 回形针、多个附件和验证

    有人有 Rails 3 的多个附件在多部分表单上进行验证的示例吗 我一直在努力让它永远工作 并且找到了我能找到的每一篇博客文章和消息 但没有一个涵盖这种情况 并且文档根本 没有帮助 第一个问题是大多数示例都使用 new record 在视图