我有这个上传图片的表格。
<%= 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?(不要认为这是个好主意,因为我需要确保他们不会尝试将图片上传到一些他们不拥有的项目中)
发布于 2012-12-04 07:55:49
为了防止任何人感到好奇-我通过将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的项目。
https://stackoverflow.com/questions/13691638
复制相似问题