これが幅広い質問であることはわかっていますが、具体的な答えを見つけることができなかったので、ショットガンアプローチを引っ張る必要があると感じています.
Railsアプリ内にemberアプリをロードしようとしています。私は ember_controller.rb を持っています:
class EmberController < FrontendController
layout 'ember'
def load
end
end
私の Rails ルートは次のようになります。
MdmFrontEnd::Application.routes.draw do
resources :sessions, only: [:create, :new, :destroy]
match '/signin', to: 'sessions#new'
match '/signout', to: 'sessions#destroy', via: :delete
match '*path' => 'ember#load'
root to: 'ember#load' #makes the root of the app, the ember root.
end
私のレールのレイアウトは次のようになります。
!!! 5
%html
%head
%meta{charset:"utf-8"}
%title= t("layouts.mobile_manager")
%meta{name:"viewport", content:"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" }
%link{rel: "icon", type:"image/png", href:"/assets/favicon_16x16.png"}
= javascript_include_tag "i18n"
:javascript
window.locale = "<%= I18n.locale %>";
= stylesheet_link_tag 'application', media: 'all'
= csrf_meta_tags
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
-if Rails.env.production?
:javascript
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-33246783-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
= render 'shared/js_constants'
= javascript_include_tag 'app_ember'
%body
app_ember.coffee で新しい ember アプリを次のように初期化しています。
#= require jquery
#= require jquery_ujs
#= require handlebars
#= require ember
#= require_self
#= require_tree ./app/routes
#= require_tree ./app/controllers
#= require_tree ./app/models
#= require_tree ./app/templates
#= require_tree ./app/views
window.Mdm = Ember.Application.createWithMixins
LOG_TRANSITIONS: true
ajax: ->
$.ajax.apply(this, arguments)
getUrl: (path) ->
"/#{path}"
次に、アプリケーション内に {{outlet}} を持つテンプレート application.hbs と index.hbs を用意します。
しかし、ルートをレンダリングしようとすると、空白の画面が表示されます。
ただし、コンソールで Ember.TEMPLATES を実行すると、各テンプレート オブジェクトが一覧表示されるため、テンプレートが表示されていることはわかっています。
b/t rails と ember の問題のように感じますが、わかりません。
アイデアをありがとう!
編集:: 私のコンソール
ご覧のとおり、テンプレート オブジェクトを読み込んでいますが、アプリケーションまたはインデックス テンプレートが見つからないというメッセージも表示されます。私のテンプレートディレクトリは、モデル、コントローラなどの他のディレクトリと同じように名前が付けられ、配置されています。