【问题标题】:Missing partial when using devise 2.0 w Rails 3.1.3使用 devise 2.0 w Rails 3.1.3 时缺少部分
【发布时间】:2012-03-30 03:35:52
【问题描述】:

我有一个带有购物车模型的 rails 应用程序(rails 3.1.3)。我想在布局中显示购物车的摘要,所以我创建了部分视图/carts/_cart.html.haml。我的应用程序运行良好,并且在每个视图中都呈现部分购物车。但是当我安装 devise 2.0 时,无法再找到设计视图的部分内容。相反,当我尝试调用设计视图时,我会看到以下错误代码:

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 

谁能帮我理解为什么在设计视图中没有找到渲染局部的调用?

我为此做的短期修复是将部分代码带回完整的布局文件 - 所以现在设计不必去搜索并且一切正常......但这并不理想而且它很混乱我的代码。

谢谢!

【问题讨论】:

    标签: ruby-on-rails devise render partials


    【解决方案1】:

    你应该能够指定部分:

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

    您的定义中的views/ 部分可能会抛弃它。 app/views 是隐含的,所以当你指定views/carts/cart 时,它可能在app/views 下找不到views 目录。

    【讨论】:

    • 很好——就是这样。谢谢!
    【解决方案2】:

    如果这个页面可以从其他页面访问。那么

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

    是正确的方法,因为如果这个页面在其他模型中打开,那么'carts/cart' 将不可用,就像 url 是 ex 一样。 'localhost:3000/products' 这个页面会给出丢失的部分错误,所以/ 将解决这个问题,作为其他答案,不需要'views'

    【讨论】:

      猜你喜欢
      • 2021-10-24
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 2013-08-02
      相关资源
      最近更新 更多