【问题标题】:file_field upload button appearing multiple times on edit formfile_field 上传按钮在编辑表单上多次出现
【发布时间】:2017-02-21 18:55:16
【问题描述】:

我的_form.html.erb 文件中有这段代码:

<%= f.fields_for :request_attachments do |ra| %>
    <div class="row westmontTextMuseo3" id="uploader">
        <div class="col-xs-12">
          <label class="btn btn-info"> Upload Files
                <%= ra.file_field :request_attachment_file, :multiple => true, name: "request_attachments[file][]", :style => "display: none", type: "file" %>
                <%= ra.hidden_field :file_cache %> 
          </label>
        <%= link_to(ra.object.file.url.to_s.split('/')[-1], ra.object.file.url) %>
        </div>
    </div>
<% end %>

我知道为什么会出现Upload Files 按钮。似乎我希望它超出嵌套表单的范围,但我不知道该怎么做。

我的目标是在按钮提供每个已附加文件的链接后放置一次。

任何帮助都会很棒,谢谢。

编辑:其他代码,看看我们是否可以让它工作。

<%= f.fields_for :request_attachments do |ra| %>
  <%= link_to(ra.object.file.url.to_s.split('/')[-1], ra.object.file.url) %>
<% end %>

<div class="row westmontTextMuseo3" id="uploader">
  <div class="col-xs-12">
    <label class="btn btn-info"> Upload Files
      <%= @request.request_attachments.file_field :request_attachment_file, :multiple => true, name: "request_attachments[file][]", :style => "display: none", type: "file" %>
      <%= @request.request_attachments.hidden_field :file_cache %> 
    </label>
  </div>
</div>

但这失败了undefined method file_field' for #&lt;RequestAttachment...

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。那么 - 你有什么努力使这项工作?您是否尝试过将字段移动到您期望的位置?然后发生了什么?
  • 我尝试了if 语句来查看ra.object.file 是否存在,但这将显示链接,而不是按钮。我尝试使用@requests.request_attachments.all.each do |x| ... 将link_to 对象移到外部,但随后每个文件的按钮仍会出现多次。和...感谢您的欢迎.... 在这里已经 2 年多了,但欢迎总是很好
  • :D 我的“欢迎”基于一个人有多少分——通常我猜对了,但有时我猜错了;)不过——我很高兴它让你开心!
  • 是的,如果您将每个附件放在任何类型的循环中(无论是each 还是fields_for),您将继续为每个附件获取一个字段 - 如果您只想要一个。 ..那么它需要在循环之外。您能否向我们展示您尝试过的仅显示链接的其他代码的示例?也许我们可以找到一种方法来实现这一目标。
  • 我想我刚刚想通了。通过将@request..... 替换为file_field_taghidden_field_tag... 我认为这是行不通的,因为它是一个嵌套属性,但由于它只依赖于参数,所以它似乎起作用了。

标签: ruby-on-rails twitter-bootstrap file-upload


【解决方案1】:

这似乎奏效了

<%= f.fields_for :request_attachments do |ra| %>
  <div class="row">
    <div class="col-xs-12">
      <%= link_to(ra.object.file.url.to_s.split('/')[-1], ra.object.file.url) %>
    </div>
  </div>
<% end %>

<div class="row westmontTextMuseo3" id="uploader">
  <div class="col-xs-12">
    <label class="btn btn-info"> Upload Files
      <%= file_field_tag :request_attachment_file, :multiple => true, name: "request_attachments[file][]", :style => "display: none", type: "file" %>
      <%= hidden_field_tag :file_cache %> 
    </label>
  </div>
</div>

我认为由于属性是嵌套的,所以它不起作用,但它确实起作用。

【讨论】:

    猜你喜欢
    • 2014-12-02
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2013-07-02
    • 2019-10-28
    • 1970-01-01
    相关资源
    最近更新 更多