一次批准多个记录

时间:2017-08-01 13:54:23

标签: ruby

如何实现此场景:

管理员使用复选框选择多个记录,然后单击按钮批准选中,这将立即将所选项目的状态更改为已批准。记录就像帖子一样。

这是我的代码:

配置/路线:

resources :time_cards do
collection do
  get 'management'
  put 'approve_multiple'
end
member do
  get 'review'
  get 'tracking'
  patch 'approve_or_reject'
end

HTML:

    <%= form_tag({controller: 'time_cards', action: 'approve_multiple'}, method: 'put', id: 'approve_multiple_time_card_form') do %>
      <% @time_cards.each do |time_card| %>
          <tr>
            <% if time_card.status.downcase == 'submitted' %>
                <td><%= check_box_tag "time_cards_to_approve[]", time_card.id %></td>
            <% else %>
                <td>&nbsp;</td>
            <% end %>
            <td><%= time_card.id %></td>
            <td><%= time_card.week_of.to_date.strftime('%B %-d, %Y') %></td>
            <td><%= time_card.user.name %></td>
            <td><%= time_card.status %></td>
            <td><%= output_hours(time_card.time_card_entries) %></td>
            <td>
              <%= link_to review_time_card_path(time_card) do %>
                  <% if time_card.status.downcase == 'submitted' %>
                      <i class="material-icons">edit</i>
                  <% end %>
              <% end %>

            </td>
          </tr>
      <% end %>
      <%= submit_tag "Approve Selected", class: 'btn btn-success' %>
    <% end %>

控制器:

#PUT /time_cards/approve_multiple
  def approve_multiple
    authorize TimeCard

    @time_cards.update_all({status: 'Approved'}, {id: params[:time_cards_to_approve]})
    respond_to do |format|
      if !@time_cards.errors
        format.json { render json: { notice: 'Time cards approved successfully.'} }
        format.html { redirect_to redirect_to management_time_cards_path, notice: 'Time cards approved successfully.'}
      else
        format.json { render json: { error: @time_cards.errors, alert: 'There was a problem approving the time card.'}}
        format.html { redirect_to management_time_cards_path, alert: @time_cards.errors}
      end
    end

结束

???我不是没有错的地方吗?

1 个答案:

答案 0 :(得分:3)

将这些ID发送到像这样的动作

Post.where(id: params[:ids]).update_all(approved: true)

params[:ids]是一系列帖子'ID

update_all返回更新记录的数量

Ops,我理所当然地认为我们在讨论rails,但它从未被提及过。

相关问题