ruby - 一次批准多个记录

标签 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 %>

Controller :

#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

结束

???我不知道哪里错了?

最佳答案

将这些 id 发送到这样的操作

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

params[:ids] 是一个帖子 ID 数组

update_all 返回更新的记录数

哎呀,我理所当然地认为我们在谈论 rails,但从未提及。

关于ruby - 一次批准多个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45439861/

相关文章:

从 URL 字符串中提取主机的 Ruby 代码

javascript - 使用 JS 中的 SJCL 和 Ruby 中的 OpenSSL 的椭圆曲线加密

ruby-on-rails - Ruby on Rails 和多核 CPU

mysql - Ruby on Rails 中的嵌套查询出现问题

ruby-on-rails - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055)

ruby - 如何获取HTTPRequest POST数据?

ruby - sidekiq 不是以 bundle exec 开头

ruby-on-rails - 你如何说服你的经理你的项目需要大量重构?

ruby-on-rails - 如何使用 Ruby 测试变量是否包含在整数列表中?

ruby - 有没有办法用内存分配报告来分析 ruby​​ 1.9.2 脚本?