简而言之...
当构建Ember.js应用坚持到一个Rails应用程序,我应该如何处理Rails的路由/看法? 我想我只需要Rails的渲染application.html.erb布局使Ember.js应用程序初始化和处理路由/视图/模板。
细节:
特别是如果我访问本地主机:3000,我Ember.js的应用程序有机会初始化之前,Rails的命中项目控制器上的“指数”行动。 它会抱怨缺少指数模板。 我没有index.html.erb视图我Ember.js的应用程序都是有视图/模板。
我应该创建Rails应用程序空白看法? 如果我的Rails控制器动作是返回的东西,以防止它呈现视图? 或者,我希望建立正常的Rails的观点去旁边的Ember.js应用程序的意见/模板?
如果我创建一个空白的项目/ index.html.erb和访问本地主机:3000,Rails会渲染它,Ember.js将初始化并处理从此路由。 但是,如果我访问本地主机:3000 /项目/新 Rails的直接抱怨没有在项目控制器中的新动作。 我没有在铁轨上侧项目控制器上的“新”的动作,因为我并不需要它。 我Ember.js应用程序正在处理该视图/模板。
最终,我只是不确定是什么惯例,预计将用Ember.js沿着一侧的Rails应用程序。
感谢您的帮助和远阅读本...
编辑:
我离开了,我正在试图使用Ember.js路由器的使用能力的详细pushState的历史。 这将使我非hashbang的URL。 这就是为什么我在处理Rails的争相路线我的应用程序问题的原因之一。
Rails应用程序布局:
<html>
<body>
<section id="design-archive"></section>
</body>
</html>
Ember.js应用程序:
@DA = Em.Application.create
name: 'Design Archive'
VERSION: '0.1'
rootElement: '#design-archive'
ApplicationController: Em.Controller.extend()
ApplicationView: Em.View.extend
templateName: 'application'
DA.initialize(DA.Router)
Rails的路线:
DesignArchive::Application.routes.draw do
resources :clients, :only => [:new, :create, :index, :show, :destroy]
resources :projects, :only => [:new, :create, :index, :show, :destroy]
root :to => 'projects#index'
end
Ember.js路线:
DA.Router = Em.Router.create
location: 'history'
root: Em.Route.extend
index: Em.Route.extend
route: '/'
redirectsTo: 'projects'
# Actions
doProjects: (router) ->
router.transitionTo('projects')
doProjectsNew: (router) ->
router.transitionTo('newProject')
# Routes
projects: Em.Route.extend
route: '/projects'
index: Em.Route.extend
router: '/'
connectOutlets: (router) ->
router.get('applicationController').connectOutlet('projects', DA.Project.find())
showProject: Em.Route.transitionTo('project')
project: Em.Route.extend
route: '/projects/:project_id'
connectOutlets: (router, project) ->
router.get('applicationController').connectOutlet('project', project)
projectsIndex: Em.Route.transitionTo('projects')
newProject: Em.Route.extend
route: '/projects/new'
connectOutlets: (router) ->
router.get('applicationController').connectOutlet('projectsNew')
Rails的控制器:
class ProjectsController < ApplicationController
def index
@projects = Project.all
respond_to do |format|
format.html
format.json { render json: @projects }
end
end
end