我正在更新Rails应用以使用Ember.js。在整合ember之前,应用程序中存在的那些视图仍然可以正常工作,但我还添加了几个新视图。这些视图包含所有必要的余烬部分(模板,控制器等),以及所有Rails部分,不包括视图文件。
如果用户通过单击内部链接访问它们,这些视图可以正常工作。但是,如果用户重新加载页面或手动输入URL,则会出现此错误:
ActionView::MissingTemplate at /contribute
Missing template pages/contribute, application/contribute with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee]}. Searched in:
* "/home/sites/whistlr/app/views"
* "/home/.rvm/gems/ruby-2.0.0-p0@whistlr/gems/devise-3.0.0/app/views"
这显然正在发生,因为我没有视图文件。问题是,这是否必要?有没有办法告诉Rails加载Ember视图?理想情况下,我只是在对话完成后删除所有旧的Rails视图文件。
答案 0 :(得分:1)
没有必要,但您需要设置rails routes.rb
以捕获所有路径,这些路径也会像显示ember应用及其html的索引页一样呈现。
namespace :api do
# resources go here
end
root :to 'home#index'
match "/*path" => 'home#index'
注意:您希望为项目自定义此路径模式,否则也会在此处发送404s。
答案 1 :(得分:1)
没有必要创建单独的视图。诀窍是在应用程序控制器中捕获异常,然后强制它呈现布局:
class ApplicationController < ActionController::Base
rescue_from ActionView::MissingTemplate do |exception|
render "/layouts/application"
end
end