I have a Rails project which uses an engine, and I am experiencing an issue when working in development mode.
Whenever I make some change to something in my project, the application cannot find anymore the engine's views.
Missing template spree/api/credit_card_types/index, spree/api/base/index with {:locale=>[:es], :formats=>[:json], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee, :rabl], :versions=>[:v1]}. Searched in:
* "/home/user/project/app/views"
* "/home/user/.rvm/gems/ruby-2.1.0@project/bundler/gems/spree-ebda3354180a/api/app/views"
The engine's view root directory is not appearing in the search path, but I can't understand why. Any idea?
My routes.rb (note that I don't mount my engine)
require 'resque/server'
Project::Application.routes.draw do
resources :shipping_companies
get 'signin', to: 'signin#signin'
get 'register', to: 'register#register'
scope '/frontend/api', module: :api do
# ...
end
namespace :frontend do
end
Spree::Core::Engine.add_routes do
# ...
end
# Custom Admin
Spree::Core::Engine.add_routes do
# ...
end
get '/faq/' => 'pages#show', id: 'faq'
get '/privacy/' => 'pages#show', id: 'privacy'
get '/terms/' => 'pages#show', id: 'terms'
mount JasmineRails::Engine => '/specs' if defined?(JasmineRails)
mount Resque::Server.new, :at => '/resque'
end
The controller in my engine (in app/controllers/spree/api/credit_card_types_controller.rb
)
class Spree::Api::CreditCardTypesController < Spree::Api::BaseController
def index
@credit_card_types = SpreeDecidir::CreditCardType.all.select do |credit_card_type|
credit_card_type.installment_plans.present?
end.collect {|credit_card_type| SpreeDecidir::CreditCardTypePresenter.new credit_card_type}
@amount = params[:amount].to_f if params[:amount]
end
end
And the RABL view (at app/views/spree/api/credit_card_types/index.v1.rabl
)
object false
node(:count) { @credit_card_types.count }
child(@credit_card_types => :credit_card_types) do
extends "spree/api/credit_card_types/show"
end