Отсутствует частичное при использовании devise 2.0 w Rails 3.1.3 - PullRequest
1 голос
/ 30 марта 2012

У меня есть приложение rails (rails 3.1.3), в котором есть модель корзины.Я хотел показать сводку корзины покупок в макете, поэтому я создал частичные представления / carts / _cart.html.haml.Мое приложение работало нормально и отображало корзину частично при каждом просмотре.Но когда я установил devise 2.0, частичное уже не могло быть найдено для представлений devise.Вместо этого я бы увидел следующий код ошибки при попытке вызвать разработанное представление:

ActionView::Template::Error (Missing partial views/carts/cart with {:handlers=>[:erb, :builder, :coffee, :haml], :formats=>[:html], :locale=>[:en, :en]}. Searched in:
  * "/Users/cameronnorgate/Web Development/Practice Apps/1-Camerons Tea/pgktea/app/views"
  * "/Users/cameronnorgate/.rvm/gems/ruby-1.9.2-p290@pgktea/gems/devise-2.0.4/app/views"

Как видите, он ищет частичное в app / views, но не проходит весь путьв папку «тележки», чтобы найти частичку «тележки».Это странно, потому что код, который я имел в представлении макета, указывал точный путь (см. Ниже):

%body{:class => params[:controller]}
  .master_container
    .master_header
      .inner_header
        .cart
          = render :partial => 'views/carts/cart', :object => @cart 

Может кто-нибудь помочь мне понять, почему мой вызов для рендеринга частичного не найден, когда внутриПредставление devise?

Краткосрочное исправление, которое я сделал для этого, состоит в том, чтобы вернуть частичный код обратно в полный файл макета - так что теперь devise не нужно искать, и все работает ... но этоне идеально, и это загромождает мой код.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Вы должны быть в состоянии указать частичное с помощью просто:

= render :partial => 'carts/cart', :object => @cart

Часть вашего определения views/, вероятно, отбрасывает его.app/views подразумевается, поэтому, когда вы указываете views/carts/cart, он, вероятно, не находит каталог views в app/views.

1 голос
/ 30 марта 2012

Если к этой странице можно получить доступ с других страниц. тогда

= render :partial => '/carts/cart', :object => @cart

Это правильный путь, потому что если эта страница откроется в других моделях, то 'carts/cart' не будет доступен, как если бы URL был ex. 'localhost: 3000 / products' на этой странице будет отсутствовать частичная ошибка, поэтому / решит проблему и, как другие ответы, 'views' не требуется

...