【发布时间】:2014-08-22 11:21:18
【问题描述】:
我有一个使用引擎的 Rails 项目,在开发模式下工作时遇到问题。
每当我对项目中的某些内容进行更改时,应用程序都无法再找到引擎的视图。
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"
引擎的视图根目录没有出现在搜索路径中,但我不明白为什么。有什么想法吗?
我的 routes.rb(注意我没有安装我的引擎)
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
我引擎中的控制器(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
还有 RABL 视图(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
【问题讨论】:
-
为您的引擎捆绑本地配置。我用过一次就这样刷新了。
-
无论是否使用本地引擎,我们都有这个问题。