使用Ember.js时是否有必要构建Rails视图?

时间:2013-07-24 22:18:31

标签: ruby-on-rails view ember.js

我正在更新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视图文件。

2 个答案:

答案 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