【问题标题】:Build nested field only for new entry仅为新条目构建嵌套字段
【发布时间】:2012-02-06 04:16:59
【问题描述】:

我有一个嵌套表单,我希望表单字段只出现一次以上传新图像,然后显示现有图像,没有任何类型的 CRUD 功能。本质上,在编辑页面上,只提供添加图像的选项,而不是删除或更新。

关系是video 有很多video_images,其中has_attached_file :image 使用回形针我现在在我的控制器中尝试以下操作:

  # GET /videos/new
  # GET /videos/new.json
  def new
    @video = current_user.videos.build
    @newthumbnail = @video.video_images.build

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @video }
    end
  end

在我看来:

    <%= f.fields_for @newthumbnail do |u| %>
        <%= u.label :image, "Upload New Thumbnail" %> <br />
        <%= u.file_field :image, :class => "image_uploader" %>
    <% end %>
    <p>
      Or select a previous thumbnail
    </p>
    <div id="previous_thumbnails">
      <!-- These will ultimately be dynamically generated as the existing image associations -->
      <div class="previous_thumbnail" rel="1">
        <img src="http://placehold.it/120x90" />
      </div>
      <div class="selected previous_thumbnail" rel="2">
        <img src="http://placehold.it/120x90" />
      </div>
      <div class="previous_thumbnail" rel="3">
        <img src="http://placehold.it/120x90" />
      </div>
      <div class="previous_thumbnail" rel="4">
        <img src="http://placehold.it/120x90" />
      </div>
    </div>

但我最终得到以下错误:

unknown attribute: video_image

这告诉我,在某个地方,对单一性与复数的误译存在差异。我可以理解为什么 Rails 会单数化它,因为它实际上是一个单一的条目。但是,即使覆盖文件字段的名称,并将name="video[video_image][image]" 变为name="video[video_images][image]",我也会收到如下错误:

VideoImage(#39741260) expected, got Array(#9591480)

发送参数:

"video_images"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x000000054f1078 @original_filename="Bill OneManBand.jpg",
 @content_type="image/jpeg",
 @headers="Content-Disposition: form-data; name=\"video[video_images][image]\"; filename=\"Bill OneManBand.jpg\"\r\nContent-Type: image/jpeg\r\n",
 @tempfile=#<File:/tmp/RackMultipart20120205-3582-1xp2duq>>},

那么我哪里错了?我觉得我可能对此采取了错误的方法......

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 forms nested paperclip


    【解决方案1】:

    改变这个

    <%= f.fields_for @newthumbnail do |u| %>
    

    到这里

    <%= f.fields_for :video_images, @newthumbnail do |u| %>
    

    这应该让字段知道它们是 video 的一部分,而不仅仅是随机的 video_image 字段

    还要确保您的 video 模型中有 accepts_nested_attributes_for

    【讨论】:

    • 我以前看过这个的语法,并没有研究它。如果我有的话,会为我节省很多时间。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多