0

Ember を初めて使用します。

理解を深めるのに役立つものはすべて読みました。

rails テンプレート内で Ember テンプレートをレンダリングすることができました。

現在、getJSON を使用してデータを ember テンプレートにバインドする作業を行っていますが、いくつかのエラーが発生しています。Uncaught TypeError: Cannot call method 'reopenClass' of undefined Error while loading route: TypeError {}

api/v1/newslinks_controller.rb

class Api::V1::NewslinksController < ApplicationController
  respond_to :json

  def index
    respond_with Newslink.all
  end

  def create
    respond_with Newslink.create(params[:newslink])
  end

  def update
    respond_with Newslink.update(params[:id], params[:newslink])
  end

  def destroy
    respond_with Newslink.destroy(params[:id])
  end
end

/api/v1/newslinks.json

{"newslinks":[{"id":1,"title":"A Sample Post","navlink":"This will be a simple post record."}]}

app.js

    App = Ember.Application.create({
      LOG_TRANSITIONS: true,
      LOG_ACTIVE_GENERATION: true,
      LOG_VIEW_LOOKUPS: true,
      rootElement: '#ember',
      ready: function() {
        console.log('I am app');
      }
    });

    App.Router.map(function() {
        this.resource('newslinks', { path: '/' });
        console.log("I am router")
    });

    App.IndexRoute = Ember.Route.extend({
    });

    App.NewslinksRoute = Ember.Route.extend({
      model: function() {
        return App.Newslink.all();
      }
    });

    App.Newslink.reopenClass({
         all: function() {
           return $.getJSON("/api/v1.newslinks_controller.json").then(function(response) {
                      var newslinks = [];

                      response.newslinks.forEach(function(newslink) {
                  newslinks.push(App.Newslink.create(newslink));
                }); 
                      return newslinks;
              });
         }
    });

newslinks.handlebars

<div class="offset1">
  <h1>Newslinks</h1>

  <ul>
    {{#each newslink in model}}
      <li>{{newslink.title}}</li>
      <li>{{newslink.navlink}}</li>
    {{else}}
      <li>There is no news.</li>
    {{/each}}
  </ul>

  {{outlet}}
</div>

ご協力いただきありがとうございます。

4

1 に答える 1