Является ли мой. Валидным? блокирует мои уведомления? - PullRequest
0 голосов
/ 15 января 2019

Проблема: Мои уведомления для моего конкретного контроллера не отображаются.

Это не макет, потому что он работает в других местах с другими контроллерами, использующими его.

Вот метод создания:

  def create
    @order = Order.new(order_params)
    @listing = Listing.find(params[:listing_id])
    @seller = @listing.user

    ....  
    ....
    ....

        if @order.valid?
          begin
            #stripe_charge_code_is_here

          rescue #stripe_error
             #code
          end
          if #code
             #flash[:error]
             #redirect_to
          else


        # respond_to do |format|
          if @order.save
            @order.update_column(:order_status, 1)
            # format.html { redirect_to order_confirmation_order_path(@order.order_token), notice: 'Order was successfully created.' }
            # format.json { render :show, status: :created, location: @order }
            flash[:notice] = "successful notice here."
            redirect_to order_confirmation_order_path(@order.order_token)
            else
              # format.html { render :new }
              # format.json { render json: @order.errors, status: :unprocessable_entity }
              flash[:alert] = "failed notice here.  View directions."
              redirect_to @order
            end
          end
        end
      end

Использую ли я flash[] или respond_to, ни флэш-сообщение не отображается ни для успешного, ни для неудачного заказа. Я оставил оба кода выше, respond_to закомментировано

В основном я хочу получить сообщение о неудачных заказах, потому что одна из записей формы для заказа имеет проверку с сообщением, и важно показать его, чтобы клиенты знали, что не так с их записью. При неудаче я получаю это в CMD:

No template found for OrdersController#create, rendering head :no_content

Теперь единственное отличие этого контроллера по сравнению с другими, использующими тот же макет, заключается в том, что этот метод создания имеет. valid?

Я предполагаю, что именно это мешает появлению уведомления.

Как сделать так, чтобы флеш-сообщение показывалось как для успешных, так и для неудачных созданий?

1 Ответ

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

У вас нет блока else для условия if @order.valid?.Если запись недействительна, метод немедленно завершается, и он пытается отобразить шаблон с тем же именем, что и действие контроллера (OrdersController#create), которого не существует.

Скорее, вы можете попробовать это:

    if @order.valid? && @order.save
      flash[:notice] = "successful notice here."
      redirect_to order_confirmation_order_path(@order.order_token)
    else
      flash[:alert] = "failed notice here.  View directions."
      redirect_to @order
    end

Логика @order.update_column(:order_status, 1), вероятно, должна быть перемещена в модель позже (в before_save или что-то подобное, чтобы не вызывать дополнительный вызов базы данных).

После того, как вывызовите valid? или save, вы можете получить ошибки проверки из слоя модели, используя .errors.full_messages (возможно, вы можете показать их в уведомлении об ошибке).

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