0

current_user に関連付けられているサイト テーブルの複数の行を更新しようとしています。データベースに暗号化されたデータが保存されているため、ユーザーが送信時にすべてのエントリを表示および更新できるように、フィールドを復号化し、form_tag のフィールドにデータを事前入力する必要があります。このコードを使用すると、「param `sites' のハッシュ (配列を取得) が必要です」というエラーが表示されます。現在のユーザーのすべての行を更新するために正しくフォーマットされた params ハッシュを取得するようにコードを変更する方法がわかりません。ありがとう!

Update_all フォーム

<%= form_tag update_all_url method: 'patch' do %>
    <% @sites.each do |site| %>
      <% @pwhint_de = site.pwhint_sb.decrypt 'password' %> # This is decrypting pwhint
      <% @username_de = site.username_sb.decrypt 'password' %> # This is decrypting username
      <tr>    <%= hidden_field_tag 'sites[]', site.id %>
          <td><%= text_field_tag "sites[#{site.id}][company]", site.company %></td>
          <td><%= text_field_tag "sites[#{site.id}][username_sb]", @username_de %></td>
          <td><%= text_field_tag "sites[#{site.id}][pwhint_sb]", @pwhint_de %></td>
      </tr>
    <% end %>
      <%= button_tag "Save all changes" %>
  <% end %>

コントローラ

def update_all_sites
  params[:sites].each do |id, new_attributes|
    Site.find(id).update_attributes new_attributes
end
4

1 に答える 1