Rails missing template in own gem

I forked a gem and changed some things, but I am really desperate. I always get Template is missing:

Template is missing Missing template spree/addresses/index, spree/store/index, spree/base/index, application/index with {:locale=>[:de, :en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee, :haml, :rabl], :versions=>[:v1]}. Searched in: * "/Users/Manu/Documents/rails_projects/my_store_dev/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree_my_favourites-6076d6ee5cb2/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree_address_book-b66e2abf6429/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree-promotion-roles-rule-0fd33e96c5c4/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree-promotion-exclude-specials-rule-1debc9765387/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree_better_terms_and_conditions-8001a85040eb/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/gems/spree_quick_cart-2.2.3/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree_i18n-1d94e07c68c7/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree_auth_devise-01901766a256/lib/views/backend" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree_auth_devise-01901766a256/lib/views/frontend" * "/Users/Manu/.rvm/gems/ruby-2.1.2/gems/devise-3.2.4/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree_gateway-5cbe3890d1a0/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree-33c8fa4d51d8/frontend/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree-33c8fa4d51d8/backend/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree-33c8fa4d51d8/api/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/bundler/gems/spree-33c8fa4d51d8/core/app/views" * "/Users/Manu/.rvm/gems/ruby-2.1.2/gems/kaminari-0.15.1/app/views"

This is my routes file:

Spree::Core::Engine.routes.draw do
  # Add your extension routes here
  namespace :account do
    resources :orders, only: [:index]
    resources :favourites, only: [:index]
    resources :addresses, only: [:index]
  end

end

This is my AddressesController in controller/spree/account/:

module Spree
  module Account
    class AddressesController < Spree::StoreController

  before_filter :check_logged_in_user

  def index
    @user = try_spree_current_user

  end

  private

  def check_logged_in_user
    unless try_spree_current_user
      account_addresses__path 
      redirect_to spree_login_path 
    end
  end

  end
 end
end

I have a index.haml in views/spree/account/addresses/, and this is part of rake routes:

account_orders GET    /account/orders(.:format)                                     spree/account/orders#index
account_favourites GET    /account/favourites(.:format)                                               spree/account/favourites#index
account_addresses GET    /account/addresses(.:format)                                                spree/account/addresses#index

Can someone please give me a hint?

Upvotes: 0

Views: 1181

Answers (3)

d1jhoni1b
d1jhoni1b

Reputation: 8025

I was getting this error after installing extension spree_theme

Missing partial spree/shared/_google_analytics

i ended up finding the file (so it was not missing at all) here: public/vinsol_spree_themes/current/views/spree/shared/_google_analytics.js.erb

after debugging a bit finally detected a missing class of class not defined type error with something Spree::Tracker so all i had to was to fix that dependency and the thing worked, as mentioned above by stujo sometimes it seems this message is not related with the file itself but with external causes

this is how i'm generating my project from scratch if you proceed this way you will probably dont have any more issues and will be able to run spree 3.5 just fine

Spree base installation from scratch

** Assuming you have an empty rails app **

Update Gemfile

gem 'spree', '~> 3.5.0'

gem 'spree_auth_devise', '~> 3.3'

gem 'spree_gateway', '~> 3.3'

Install development dependencies

1) bundle update i18n (i'm thinking this is optional but not sure)

2) bundle install

Install install generators to set up Spree:

1) rails g spree:install --user_class=Spree::User

You will be asked to setup an admin account Email [[email protected]]: [email protected] Password [spree123]:

then just run rails s and you will be all set

I just followed this Spree Official Installation Guide and everything worked jut fine

Upvotes: 2

stujo
stujo

Reputation: 2109

I had an similar experience, not sure if this applies to you or not but here it is:

This is the error I got:

ActionView::MissingTemplate at / . 
Missing partial spree/shared/_google_analytics with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :haml, :jbuilder, :rabl], :versions=>[:v1]}. Searched in:
* "/Users/sjones/work/cs-spree/app/views"...

But it turns out the partial actually exists and is even being parsed and run (I use the RubyMine debugger to check)

The error is incorrect. In my case a helper method try_spree_current_user was missing from the controller, and this missing method NoMethodError error was somehow being trapped and replaced with the MissingTemplate error shown.

Fixing that error caused the template to load just fine.

Like I said, this may not be your problem, but this is so weird I'm posting this for others.

Upvotes: 3

neo
neo

Reputation: 4116

You need to include html to your haml file name.

Like so:

your_file_name.html.haml

Rename your index file to:

index.html.haml

Read more about haml here:

http://haml.info/tutorial.html

Upvotes: 0

Related Questions