私は ember.js に比較的慣れていないので、まだ学習に苦労しています。私は ember-rails gem と Rails を JSON API として使用しています。
最初に、新しいレコードを追加する機能を備えたレコード (この場合はメール) のリストを表示するものを作成したかっただけです。UI のセットアップと機能は完了しており、ember は Rails API からメールのリストを取得しています。メールのタイトルをクリックすると、メール全体が表示されます。
私の問題は、新しいレコードを追加することです。メール作成フォームをセットアップしましたが、ルーターとコントローラーのコードを数日間再配置した後も、新しいレコードを追加できませんでした。私が見つけたすべての例は、トランザクション、createRecords、.get('store')、.get('content') をジャグリングし、何らかのアクションを通じて詳細をコミットするさまざまな方法を示唆しているようです。それらのどれも私のために働いていません。これが私が持っている最も近いと感じるものです:
店
App.Adapter = DS.RESTAdapter.extend
serializer: DS.RESTSerializer.extend
primaryKey: (type) -> '_id'
App.Store = DS.Store.extend
revision: 11
adapter: 'App.Adapter'
メールモデル
App.Email = DS.Model.extend
from: DS.attr('string')
to: DS.attr('string')
subject: DS.attr('string')
body: DS.attr('string')
created_at: DS.attr('string')
ルートを作成
App.ComposeRoute = Ember.Route.extend
model: () ->
transaction = this.get('store').transaction()
email = transaction.createRecord(App.Email, {})
return email
events: {
save: (email) ->
email.get('store').transaction()
}
Compose テンプレート(一部の HTML をトリミング)
<label class="control-label" for="to">To</label>
{{view Ember.TextField valueBinding="to" id="to" placeholder="Your friend" required="true"}}
<label class="control-label" for="subject">Subject</label>
{{view Ember.TextField valueBinding="subject" id="subject" placeholder="What's it about?" required="true"}}
<label class="control-label" for="notes">Your message</label>
{{view Ember.TextArea valueBinding="body" id="body" placeholder="Your message"}}
<button class="btn btn-primary btn-large" {{action save this}}>Send email</button>
Rails email_controller.rb
class EmailsController < ApplicationController
# GET /emails.json
def index
render json: Email.all
end
# GET /emails/1.json
def show
email = Email.find(params[:id])
render json: email
end
# POST /emails.json
def create
email = Email.new(params[:email])
email.save
render json: email, status: :created
end
したがって、上記のコードを使用して、テキストボックスに入力し、送信ボタンをクリックしても、何も起こらないようです。しかし、Inbox ページに戻ると、追加したばかりのレコードが表示されます (woohoo!) が、Rails を介して永続化されていません (hrmmm) - 更新するとすぐに消えてしまいます。Rails のログを見ると、ember は Rails に何も送信していないようです。
基本的なプロセスを本当に理解せずに、さまざまなブログ投稿からさまざまな行を試すだけで、ぐるぐる回っているように感じます. これをどのように行う必要がありますか?Ember のドキュメントを読みましたが、基本的な概念は説明されていますが、RESTAdapter を使用した実用的な例はほとんどありません。