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?
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.
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 [spree#example.com]: admin#cucg.com
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
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
Related
For convenience let's say we run the following:
bin/rails generate scaffold Candidate::Test
The generating function then proceeds to generate all the major components on the corresponding module names. Everything should work fine if I do a rails test right after generating the scaffold but I get the following error.
Candidate::TestsControllerTest#test_should_show_candidate_test:
RuntimeError: Neutered Exception ActionView::Template::Error: Missing partial candidate/tests/_test with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :jbuilder]}.
And here's what the error suggested:
Did you mean? candidate/tests/candidate_test
There's something wrong with the naming of the generator. What should I do to resolve this?
You read link https://guides.rubyonrails.org/v5.1/generators.html
Rails: 7.0.3
Ruby: 3.1.2
And I run bin/rails generate scaffold Candidate::Test => It's okie.
I have a plugin (in my_rails_app/vendor/plugins directory) and its controllers use view from my application (my_rails_app/app/views). When I run it in development mode everything works well, but in staging/production it seems like the plugin looks for partial views in its own directory (my_rails_app/vendor/plugins/my_plugin/app/views).
For example I have controller (in the plugin):
module MyPlugin
class SampleController < ApplicationController
layout "application"
def new
#code
end
end
end
The layout is OK in both development and production, but the layout's in the template itself, I render a partial:
= render :partial => "_head"
in development: works well
in production:
ActionView::Template::Error (Missing partial /sample/head, stamper/application/head with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :haml]}. Searched in:
* "/my_rails_app/app/views"
* "/my_rails_app/vendor/plugins/my_plugin/app/views"
Why production plugin looks for a different path?
I am using rails version 3.2.12 and was using .erb templates for my view.
Now I want to start using haml templates.
I added haml and haml-rails to the gem file and installed the bundle.
Using haml (4.0.0)
Installing haml-rails (0.4)
I have made a mock-up application.html.haml
!!! 5
%html
%head
%title Rotten Potatoes!
= stylesheet_link_tag 'application'
= javascript_include_tag 'application'
= csrf_meta_tags
%body
= yield
I then changed the application_controller.rb to
class ApplicationController < ActionController::Base
layout "application"
protect_from_forgery
include SessionsHelper
end
when I run this I get the following error message:
Missing template layouts/application with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/home/coen/Desktop/rails_project/sample_app/app/views"
it seems as if the haml handler not installed.
How can I accomplish this?
Well, have you restarted your development server? It is very important thing to do after adding a gem to Gemfile.
BTW. I use haml all the time, i haven't ever used 'haml-rails'.
When i start fresh project, the only thing i do is add "gem 'haml'" to Gemfile and everything works just like it supposed to work.
We use exception_notification gem in our project and we're seeing missing template errors now. Here's what our setup looks like:
# Gemfile
gem 'exception_notification'
# config/initializers/exception_notifications.rb
if Rails.env.production?
server_hostname = `hostname`.chomp
Rails.application.config.middleware.use ExceptionNotifier,
:exception_recipients => %w(webdev#domain.com),
:sender_address => %("Application Error" <admin#domain.com>),
:email_prefix => "[#{server_hostname}] "
end
When the exception occurs, we do indeed receive the email, but the rendered error page is an unstyled mix of raw ERB and text, not pretty at all <screenshot> and the error message in our log is:
ActionView::MissingTemplate (Missing template /exception_notification with {:locale=>[:en], :formats=>[:text], :handlers=>[:erb, :builder]}. Searched in:
* "/Users/j/Projects/agilebits/app/views"
* "/Users/j/Projects/agilebits/vendor/bundle/ruby/1.9.1/gems/exception_notification-3.0.1/lib/exception_notifier/views"
):
Of course, the views are not in my app/views folder, but in the gems folder I do have:
↪ ls -R /Users/j/Projects/agilebits/vendor/bundle/ruby/1.9.1/gems/exception_notification-3.0.1/lib/exception_notifier/views
exception_notifier
/Users/j/Projects/agilebits/vendor/bundle/ruby/1.9.1/gems/exception_notification-3.0.1/lib/exception_notifier/views/exception_notifier:
_backtrace.html.erb _request.html.erb background_exception_notification.html.erb
_backtrace.text.erb _request.text.erb background_exception_notification.text.erb
_data.html.erb _session.html.erb exception_notification.html.erb
_data.text.erb _session.text.erb exception_notification.text.erb
_environment.html.erb _title.html.erb
_environment.text.erb _title.text.erb
Looks like Rails is looking for the view /exception_notification.text.erb in exception_notification-3.0.1/lib/exception_notifier/views and not in the exception_notifier subdirectory there. At this point, I'm not sure if this is a problem with Rails or the exception_notification gem, but given that the emails are sent, I'm not sure why there's an error message at all.
Thanks for taking a look and for any guidance.
I had the same issue and ended up forking exception_notification and changing where it looks for the templates in notifier.rb. Fork is at https://github.com/etcetc/exception_notification
I have generated a new controller -
murtaza#murtaza-dev:~/workspace/rails/sim-sim$ rails g controller home index
create app/controllers/home_controller.rb
route get "home/index"
invoke haml
create app/views/home
create app/views/home/index.html.haml
invoke test_unit
create test/functional/home_controller_test.rb
invoke helper
create app/helpers/home_helper.rb
invoke test_unit
create test/unit/helpers/home_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/home.js.coffee
invoke scss
create app/assets/stylesheets/home.css.scss
However when I try to access it on localhost:3000/home/index, I get the below error on my webpage-
Template is missing
Missing template home/index, application/index with {:locale=>[:en],
:formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in:
* "/home/murtaza/workspace/rails/sim-sim/app/views"
How do I remedy it ?
may be you should add "gem 'haml-rails'" into Gemfile development group
like this:
Gemfile
gem 'haml-rails', :group => :development