Добавление условного оператора в ссылку - PullRequest
0 голосов
/ 02 февраля 2019

У меня забронированы номера, когда вы бронируете номер, он автоматически сохраняет ваш статус бронирования как «Ожидает проверки хоста».Когда вы принимаете бронирование, статус бронирования меняется на «Подтверждено» (что работает отлично), а при отклонении он должен изменить статус на «Отменено».Когда вы нажимаете «Отклонить», который имеет статус «Отменено», он откатывается, обновление не работает.

Вот мой код для ссылки, страница индекса:

<li><%= link_to "Accept", my_booking_path(booking, booking: {status: "Confirmed"}), method: :patch, class: "btn btn-success" %></li>
<li><%= link_to "Decline", my_booking_path(booking, booking: {status: "Cancelled"}), method: :patch, class: "btn btn-danger" %></li>

И моя модель:

class Booking < ApplicationRecord
  belongs_to :user
  belongs_to :bed
  has_one :review, dependent: :destroy
  validates :checkin_on, presence: true
  validates :checkout_on, presence: true
  validates :status, inclusion: { in: ["Pending guest request", "Pending host validation", "Confirmed", "Cancelled"], allow_nil: true }
end

Мое действие по обновлению на контроллере бронирований:

def update
  set_booking
  @booking.update(set_params)
  redirect_to my_bookings_path
end

И параметры:

def set_params
  params.require(:booking).permit(:status)
end

Как я могу реализовать это, чтобы он прекратил откат?Любая помощь или понимание будут оценены.Спасибо!

1 Ответ

0 голосов
/ 02 февраля 2019

Попробуйте allow_nil вне блока включения, как:

validates :status, inclusion: { in: ["Pending guest request", "Pending      host validation", "Confirmed", "Cancelled"] }, allow_nil: true 

Вы также можете использовать allow_blank: true вне блока включения, как указано выше ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...