Rails 3.2 - 在现有表单上添加新关联

Posted

技术标签:

【中文标题】Rails 3.2 - 在现有表单上添加新关联【英文标题】:Rails 3.2 - Adding new associations on existing form 【发布时间】:2013-12-15 04:51:59 【问题描述】:

在我的 Rails 应用程序中,我有两个模型:产品和屏幕截图。以下是我在两者之间的关联:

class Product < ActiveRecord::Base
  has_many :screenshots, :dependent => :destroy
end

class Screenshot < ActiveRecords::Base
  belongs_to :products
end

在我的“编辑产品”表单上,我已经完成了它,以便我可以查看属于该产品的所有屏幕截图。可以删除屏幕截图,但我想让它使用 AJAX 可以异步添加新的屏幕截图。请查看以下链接以获取我在表单上设置的屏幕截图(我没有 10 声望,所以我还不能发布图片)。

http://min.us/i/baP9RUNzOgGNa

我想这样做,以便我可以单击“添加屏幕截图”链接,它将文件字段中指定的屏幕截图添加到下面呈现的屏幕截图中。我已经为此苦苦挣扎了几个小时,这是我得到的最接近的:

<div class="control-group">
    <%= f.label :screenshots, :class => "control-label product-align-left" %>

    <div class="controls">
        <%= f.file_field "Add Screenshot", :name => "txtAddScreenshot" %>

        <%= link_to "Add Screenshot", add_screenshot_product_path(@product), :remote => true %>
    </div>
</div>

使用此代码,将调用 add_screenshot 操作,这很好,但我不会在参数中提供要添加的文件。有什么办法可以在参数中获取文件?如果没有,我还应该如何解决这个问题?我正在使用 Paperclip 处理屏幕截图。

【问题讨论】:

jQuery Ajax File Upload的可能重复 嗨,菲特。我看了一下 SO question,但它似乎与我的询问无关。我想知道当我想添加屏幕截图时,是否可以以任何方式访问我的文件字段中的数据。 Rails 似乎忽略了任何嵌套的表单,即使我以前在表单中使用过表单,所以我很困在这里。 【参考方案1】:

只是为了更新大家:html 不支持表单中的表单,所以我所做的是为屏幕截图制作一个单独的表单。

【讨论】:

以上是关于Rails 3.2 - 在现有表单上添加新关联的主要内容,如果未能解决你的问题,请参考以下文章

Rails cocoon嵌套字段,在编辑表单上呈现每个字段旁边的现有图像

流程设计器

基于 Rails 中的关联构建表单

如何在 Rails 中为现有模型生成表单?

Rails 在引导模式中添加新表单和编辑表单

如何将现有表单添加到新项目?