>source

사용자가 버튼을 클릭하면 여러 행의 데이터가 업데이트되는 Ruby on Rails 애플리케이션을 구축하려고합니다. 버튼을 클릭 할 때마다PagesController # call_action의 ActiveRecord :: StatementInvalid SQLite3 :: SQLException : 해당 열 없음 : 출석 .2오류. 데이터가 올바르게 전달되지 않았기 때문에 찾기가 작동하지 않지만 왜 작동하지 않는지 잘 모르겠습니다.

보기에있는 것

<%= link_to 'Approve',
            {controller: 'pages',
             action: 'call_action',
             store_id: @store.id,
             period_id: period.id},
            class: 'button' %>

내 pages_controller.rb

def call_action
    @attendances = Attendance.where(params[:store_id] => :store_id,params[:period_id] => :period_id)
    .update_all(status: "Approved")
        if @attendances!=nil
         @attendances.each do |var|
            var.save!
         end
         redirect_to root_path
      end
end

내 경로 파일

get '/pages/call_action' => 'pages#call_action', :as => :call_action

내 스키마

create_table "attendances", force: :cascade do |t|
    t.integer "period_id", null: false
    t.integer "employee_id", null: false
    t.integer "store_id", null: false
    t.decimal "hours_assigned"
    t.decimal "hours_worked"
    t.decimal "days_worked"
    t.decimal "regular_holidays_worked"
    t.decimal "special_holidays_worked"
    t.decimal "leaves"
    t.decimal "rest_days"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.integer "oic"
    t.string "status"
    t.index ["employee_id"], name: "index_attendances_on_employee_id"
    t.index ["period_id"], name: "index_attendances_on_period_id"
    t.index ["store_id"], name: "index_attendances_on_store_id"
  end

터미널에서 얻는 것

Processing by PagesController#call_action as HTML
  Parameters: {"period_id"=>"9", "store_id"=>"2"}
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ?  [["id", 3], ["LIMIT", 1]]
  Attendance Update All (0.8ms)  UPDATE "attendances" SET "status" = ? WHERE "attendances"."2" = ? AND "attendances"."9" = ?  [["status", "Approved"], ["2", "store_id"], ["9", "period_id"]]
  ↳ app/controllers/pages_controller.rb:13:in `call_action'
Completed 500 Internal Server Error in 6ms (ActiveRecord: 1.0ms | Allocations: 2936)


  • 답변 # 1

    모두 업데이트 업데이트 된 레코드 수를 반환합니다. 그래서@attendances레코드가 아닌 번호가 있습니다. 다음과 같이해야합니다.

    @attendances = Attendance.where(store_id: params[:store_id], period_id: params[:period_id]) @attendances.update_all(status: "Approved") Blockquote

    그리고 반복 할 필요가 없습니다.

  • 이전 javascript - http 요청 수행 중 오류 - undefined : 1 문서 이동 됨
  • 다음 php - 각 optgroup에 대한 중복 옵션 값이있는 다차원 및