2013-08-07 36 views
1

介绍从现有的Rails应用程序重新路由到灰烬

这是我在灰烬(现有的Rails应用程序)的第一次尝试,并有一些重要的资源在那里的interWeb,但考虑到我已经阅读所有这些,我仍然想要更多这是很好的检查笔记在这里。

我有一个新的模式:新闻链接 我建立了一个API,它:api/v1/newslinks.json API工作原理:http://localhost:3000/api/v1/newslinks.json

数据

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

代码

问题是,Ember似乎是lett通过其手中荷兰国际集团的路线滑(这是我做错了下面的代码,我敢肯定):

的application.js

//= require jquery 
//= require jquery-ui 
//= require jquery_ujs 
//= require jquery-fileupload/basic 
//= require jquery-fileupload/vendor/tmpl 
//= require chosen-jquery 
//= require bootstrap 
//= require bootstrap-notify 
//= require jquery.limit-1.2.source 
//= require bootstrap-switch 
//= require handlebars 
//= require ember 
//= require ember-data 
//= require_self 
//= require app 

app.js

App = Ember.Application.create({ 
     LOG_TRANSITIONS: true, 
     ready: function() { 
     console.log('App ready'); 
     } 
    }); 

    App.Router.map(function() { 
     this.resource('newslinks', { path: '/' }); 
    }); 

    App.IndexRoute = Ember.Route.extend({ 
     redirect: function() { 
     this.transitionTo('newslinks'); 
     } 
    }); 

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

    DS.RESTAdapter.reopen({ 
     namespace: 'api/v1' 
    }); 

    App.Store = DS.Store.extend({ 
     revision: 13 
    }); 

    App.Newslink = DS.Model.extend({ 
     name: DS.attr('string') 
    }); 

Application.handlebars

<!DOCTYPE html> 
    <html> 
    <head> 
    <meta name="description" content="Ember - Latest" /> 
    <meta charset=utf-8 /> 
    <title>Ember Latest</title> 
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/css/bootstrap.min.css" rel="stylesheet"> 
    <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0-rc1/js/bootstrap.min.js"></script> 
     <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
     <script src="http://builds.emberjs.com/handlebars-1.0.0.js"></script> 
     <script src="http://builds.emberjs.com/ember-latest.js"></script> 
     <script src="http://builds.emberjs.com/ember-data-latest.js"></script> 
    </head> 
    <body> 
     <script type="text/x-handlebars"> 
     <h2>Here I am</h2> 
     </script> 
    </body> 
    </html> 

的routes.rb

App::Application.routes.draw do 

    namespace :api do 
    namespace :v1 do 
     resources :newslinks 
    end 
    end 

我甚至试图返回数据还没有。只是想看到路由连接,但我得到一个路由错误。我如何确保Ember看到URL“/ newslinks”?

让我知道你是否有任何建议。谢谢!

随机无关观察

Ember.js好像读博尔赫斯的迷宫,好东西很多,而且我可以告诉它会得到后续的读数要好得多,直到一切都只是非常有意义。

+1

可能的重复[使用“ember-rails”将现有Rails应用程序从Rails迁移到Ember)(http://stackoverflow.com/questions/18091588/migrate-routes-from-rails-to-ember-with -existing-rails-application-using-ember) –

回答

1

我会使用chrome来查看Ember请求的URL。这很可能是根据你表示你的网址为'/newslinks.json'来请求'/ newslinks',这是不正确的。

在这种情况下,我会将路由从'/newslinks.json'更改为更合适的REST URL格式“/ newslinks”

+0

嘿安德鲁,很难解析你的答案。你能指出我需要改变以适应你的答案的代码中的位置(Ember正在斟酌)。如果有帮助,我很乐意提供更多信息。 –

+0

让我先澄清一下问题。再次阅读后,我意识到我可能会误解。在浏览器中访问'/ newslink'路线时遇到问题吗?或者数据不是从API返回到Ember的? – AndrewK

+0

获取路由错误。直到看到模板呈现(使用Ember)时才担心数据。 –

1

为了使工作从您的IndexRoute重定向(这是隐式和自动创建的),您newslinks路线sonce你在你的路由器地图/为您newslinks资源的路径有。

例如添加到您的应用程序,它应该工作:

App.IndexRoute = Ember.Route.extend({ 
    redirect: function() { 
    this.transitionTo('newslinks'); 
    } 
}); 

工作Demo

希望它有帮助。

+0

这个演示很有效,当然,但我还没有能够通过/ newslinks连接。路由错误。我添加了我的routes.rb以查看是否有帮助。 –

+0

我想知道是否还有其他的东西(简单)我不考虑... –

+0

hm,尽可能的我可以看到你的routes.rb看起来很好(虽然我必须承认我不擅长滑轨) – intuitivepixel