Метод обновления Rails не работает в Rails 5 для обновления записей - PullRequest
0 голосов
/ 19 января 2019

У меня есть приложение rails, и в моем приложении rails есть раздел администратора. который я делаю для обновления записи

<%= link_to "Approve", admins_transaction_path(transaction, transaction: {status: 'approved'}), method: :put %>

и в моем контроллере это выглядит так

class Admins::TransactionsController < AdminsController
  before_action :get_transaction_id, only: [:update]

  def index
    @transactions = Transaction.where(status: 'pending')
  end

  def update
    @transaction.update_attributes(transactions_params)
    redirect_to admins_transactions_path
  end

  private

  def get_transaction_id
    @transaction = Transaction.find_by(id: params[:id])
  end

  def transactions_params
    params.require(:transaction).permit(:amount, :asset_id, :user_id, :status, :txnref)
  end
end

Это мой лог

    Started PUT "/admins/transactions/1?transaction%5Bstatus%5D=approved" for 127.0.0.1 at 2019-01-19 21:17:51 +0800
    Processing by Admins::TransactionsController#update as HTML
      Parameters: {"authenticity_token"=>"Al0iJGAbwEaLs8jixUOOANQYO7QZzQZWIMp2e2crykLyeGc/JlNHwg1AATqtWMzidhK87Td199b+P0MLguAzVw==", "transaction"=>{"status"=>"approved"}, "id"=>"1"}
      Admin Load (0.8ms)  SELECT  "admins".* FROM "admins" WHERE "admins"."id" = $1 ORDER BY "admins"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
      Transaction Load (0.6ms)  SELECT  "transactions".* FROM "transactions" WHERE "transactions"."id" = $1 LIMIT $2  [["id", 1], ["LIMIT", 1]]
       (0.3ms)  BEGIN
      Asset Load (0.4ms)  SELECT  "assets".* FROM "assets" WHERE "assets"."slug" = $1 LIMIT $2  [["slug", "cash"], ["LIMIT", 1]]
      User Load (0.4ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2  [["id", 3], ["LIMIT", 1]]
      Asset Load (0.4ms)  SELECT  "assets".* FROM "assets" WHERE "assets"."id" = $1 LIMIT $2  [["id", 2], ["LIMIT", 1]]
       (0.3ms)  COMMIT
Redirected to http://localhost:3000/admins/transactions
Completed 302 Found in 39ms (ActiveRecord: 6.8ms)

моя модель транзакции

create_table "transactions", force: :cascade do |t|
    t.float "amount"
    t.string "txnref"
    t.string "status"
    t.integer "asset_id"
    t.integer "user_id"
    t.datetime "deleted_at"
    t.string "type"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["deleted_at"], name: "index_transactions_on_deleted_at"
  end

Но это не обновляет мою запись.

Довольно сбивает с толку, и я не уверен, что делаю неправильно.

Любые идеи приветствуются.

1 Ответ

0 голосов
/ 19 января 2019

Изменение

<%= link_to "Approve", admins_transaction_path(transaction, transaction: {status: 'approved'}), method: :put %>

К

<%= link_to "Approve", approve_path(transaction), method: :path%>

Контроллер

def approve
    @transaction.update(:status=>'approved')
    redirect_to admins_transactions_path
  end

Маршруты

patch '#yourcontroller/:id/approve',to:'#yourcontroller#approve' , as: :approve
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...