Rails не отображает сообщения об ошибках в форме в пользовательском методе - PullRequest
0 голосов
/ 14 апреля 2010

Я создал собственный метод checkout в моем приложении. Я создаю заказ (это делается путем добавления товаров в мою «корзину»), назначаю его своему клиенту, а затем я перехожу на экран оформления заказа, где я подтверждаю товары и вводю их номер заказа клиента и завершаю заказ (отправить) .

Все отлично работает, за исключением того, что он не отображает сообщения об ошибках. Я могу отображать флэш-уведомление об ошибке (замечено в методе complete_order), когда что-то идет не так, но в нем не указаны детали, как в обычной форме. Сообщения об ошибках должны появляться, если номер заказа клиента не является уникальным для этого клиента.

Ниже приведен код, связанный с пользовательским методом (оформить заказ).

Модель заказа:

validates_uniqueness_of :customer_order_number, :scope => :client_id

Orders_controller:

  def checkout
    @order = current_order
  end

  def complete_order
    @order = current_order

    respond_to do |format|
      if @order.update_attributes(params[:order])
        @order.complete #sets submitted datetime and state to 'complete'
        flash[:notice] = 'Thank you! Your order is being processed.'
        format.html { redirect_to( products_path ) }
        format.xml  { head :ok }
      else
        flash[:error] = 'Please review your items' #added to confirm an error is present
        format.html { redirect_to( checkout_path ) }
        format.xml  { render :xml => @order.errors, :status => :unprocessable_entity }
      end
    end

  end

И форма в представлении оформления заказа:

<% form_for @order, :url => { :controller => "orders", :action => "complete_order" } do |f| %>

  <%= f.error_messages %>


    <%= f.text_field :customer_order_number, :label => "Purchase Order Number" %>

    <p>
    <%= f.submit 'Complete Order', :confirm => 'Are you sure?' %> <small> or <%= link_to 'cancel', current_cart_path %></small>
  </p>

<% end %>

Есть идеи, как отобразить конкретные сообщения об ошибках?

1 Ответ

2 голосов
/ 14 апреля 2010

Измените redirect_to на render в другом состоянии, в противном случае метод извлечения будет вызван снова, и ошибка не будет отображаться.

else
     format.html { render :action => 'checkout' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...