0

我有这个表格用于上传图片。

<%= form_for Picture.new do |f| %>
    <%= f.label :file, "Upload Pictures: " %>
    <%= f.file_field :file, multiple: true, name: "picture[file]" %>
    <%= f.submit %>
<% end %>

我现在试图在这个模型和另一个名为 Item 的模型(Item 有很多图片)之间建立一个 has_many 连接,并为这两个模型设置一个表单。

我想我所要做的就是这样的:

<%= form_for(@item) do |f| %>

  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :keywords %><br />
    <%= f.text_field :keywords %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

 # and here goes the same form, just @item.pictures.new instead of Picture.new

<%= form_for(@item.pictures.new) do |f| %>
    <%= f.label :file, "Upload Pictures: " %>
    <%= f.file_field :file, multiple: true, name: "picture[file]" %>
    <%= f.submit %>
<% end %>

但是当我提交图像时使用此表单 - 它不会将 item_id 分配给图片。(我确实正确编写了 has_many 和 belongs_to )。

我需要手动传递 item_id 吗?(不要认为这是个好主意,因为我需要确保他们没有尝试将图片上传到他们不拥有的某些物品)

4

1 回答 1

0

以防万一有人好奇-我通过将 item_id 传递给图片来解决它,如下所示:

<%= form_for Picture.new do |f| %>
    <%= f.label :file, "Upload Pictures: " %>
    <%= f.hidden_field :item_id, :value => @item.id %>
    <%= f.file_field :file, multiple: true, name: "picture[file]" %>
    <%= f.submit %>
<% end %>

并确保在图片模型中 current_user 拥有具有此 ID 的项目。

于 2012-12-03T23:55:49.120 回答