我學習Ember.js爲我們說話,我所要做的是將其集成到一個的Rails應用(香草應用程序將數據發送到模板/視圖,只是爲了玩耍),因爲大部分時間我都在使用Rails。到目前爲止,我設法安裝了它(我正在使用ember-rails
),但是我遇到了一個小問題,即使我看過(我想)每個關於Ember和Rails的教程都看不出來。Ember.js不是在一個Rails應用程序
所以,問題是我不能讓路由器傳遞任何類型的數據到視圖/模板。我甚至硬編碼了一個JSON對象(而不是依賴於適配器)來查看這是否有效,但沒有成功。所以,我的代碼如下所示:
的Rails的Gemfile Gemfile
:
ruby "1.9.3"
gem 'rails', '3.2.16'
gem 'sqlite3'
gem 'jquery-rails'
gem 'ember-rails'
gem 'ember-source'
gem 'pg'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
Rails的控制器app/controllers/users_controller.rb
:
class UsersController < ApplicationController
def index
@a_users = User.all
respond_to do |format|
format.html
format.json {render :json => @a_users}
end
end
end
Rails的模型app/models/users.rb
:
class User < ActiveRecord::Base
validates :first_name, :presence => true
validates :last_name, :presence => true
end
Rails的串行0:
class UserSerializer < ActiveModel::Serializer
attributes :first_name, :last_name
end
Rails的路線config/routes.rb
NewEmberOnRails::Application.routes.draw do
root :to => 'home#index'
resources :users
end
而這幾乎涵蓋了Rails的一部分。如果我去拜訪localhost:3000/users.json
我得到這個格式的一個很好的格式化的JSON對象(考慮我在數據庫中有一個李四用戶): {"users":[{"first_name":"John","last_name":"Doe"}]}
的Ember.js部分,我已經寫如下:
灰燼店app/assets/javascripts/store.js
NewEmberOnRails.Store = DS.Store.extend({
// Override the default adapter with the `DS.ActiveModelAdapter` which
// is built to work nicely with the ActiveModel::Serializers gem.
adapter: DS.ActiveModelAdapter
// revision: 11,
// url: 'http://localhost:3000'
});
我即使revision
和url
但沒有發揮各地。
灰燼路由器app/assets/javascripts/router.js
NewEmberOnRails.Router.map(function() {
return this.resource('users');
});
灰燼路線app/assets/javascripts/route.rb
NewEmberOnRails.UsersRoute = Ember.Route.extend({
model: function() {
// return this.get('store').find('user');
return {users: [{
first_name: "John",
last_name: "Doe"
}, {
first_name: "Big",
last_name: "Bang"
}]};
}
});
正如你所看到的,我在這裏評論商店,這裏返回一個硬編碼對象,但沒有。
灰燼控制器app/assets/javascripts/controller/users.js
NewEmberOnRails.usersController = Ember.Controller.extend({
resourceType: NewEmberOnRails.User
});
灰燼模式app/assets/javascripts/model/user.js
var attr = DS.attr;
NewEmberOnRails.User = DS.Model.extend(
first_name = attr(),
last_name = attr()
);
最後,意見,Rails和灰燼在一起(我想我做錯了什麼在這裏,但我無法弄清楚什麼):
Rails的用戶查看app/views/users/index.html.erb
<h1>Users</h1>
<script type="text/x-handlebars">
{{ view NewEmberOnRails.ListUsersView }}
</script>
所以,這是調用灰燼看,這裏(app/assets/javascripts/views/users/list.js
):
NewEmberOnRails.ListUsersView = Ember.View.extend({
templateName: 'users/users',
usersBinding: 'NewEmberOnRails.usersController'
});
即這裏使用users
模板(app/assets/javascripts/template/users/users.handlebars
) :
,在ShowUserView
我有(app/assets/javascripts/views/users/show.js
):當
NewEmberOnRails.ShowUserView = Ember.View.extend({
templateName: 'users/show'
});
,並渲染這個模板(app/assets/javascripts/templates/users/show.handlebars
)
First Name: {{user.first_name}}
因此,要結束談判 ...我訪問localhost:3000/users
我只得到No users!
,女巫帶我有兩種可能性:
- 我不必在我通過它在
app/assets/javascripts/template/users/users.handlebars
- 迭代的時候我有任何
users
陣列,但是是空的,所以路線和我的意見/模板之間的問題。
有沒有人有什麼想法?
您正在使用什麼燼/燼數據的版本?應用程序是否嘗試向端點發送網絡請求?如果是這樣,它擊中'users'或'users.json'? – Kingpin2k
你是否從你的餘燼視圖中獲得任何純HTML?我沒有看到正在創建的應用程序 – Kingpin2k
我正在使用'ember-rails'版本'0.14.1'。這給我Ember版本'1.3.0',Ember數據版本'0.14',全部在jQuery'1.10.2'(來自'jquery-rails 3.0.4')。不,我忘了提及這一點。當用戶點擊時,該應用不會嘗試任何請求。 該應用程序是在'app/assets/javascripts/application.js'中創建的。就像'NewEmberOnRails = Ember.Application.create();'。客戶端沒有返回錯誤。 – Vincent