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接続を作成し、これら2つのモデルに対して1つのフォームを作成しようとしています。

私がしなければならないのはこのようなものだけだと思いました:

<%= 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 に答える