ruby-on-rails - 将现有的 Rails 路由/应用程序迁移到 emberjs

标签 ruby-on-rails ember.js ember-data

我正在尝试使用 emberjs 渲染我的一些页面,这样内容就不会重新加载

我遇到的问题是似乎什么都没有渲染

应用程序.js

#= require jquery
#= require jquery_ujs
#= require jquery.ui.all
#= require date
#= require misc
#= require foundation
#= require handlebars
#= require ember
#= require ember-data
#= require_self


App = Ember.Application.create(
  LOG_TRANSITIONS: true
  ready: ->
    console.log "App ready"
    return
)
App.Router.map ->
  @resource "admin/pages",
    path: "/admin/pages"

  return

App.IndexRoute = Ember.Route.extend(redirect: ->
  @transitionTo "admin/pages"
  return
)
App.NewslinksRoute = Ember.Route.extend(model: ->
  App.Page.find()
)
DS.RESTAdapter.reopen namespace: "admin/pages"
App.Store = DS.Store.extend(revision: 13)
App.Page = DS.Model.extend(name: DS.attr("string"))

# for more details see: http://emberjs.com/guides/application/
#window.Grokphoto = Ember.Application.create()
$ ->
  $(document).foundation()
  return

路线.rb

match 'admin' => 'admin/pages#index'
  namespace :admin do
    resources :events, :only => :index
    resource :photographer, :only => [:edit, :update]
    resources :pages
    resources :posts
    resources :galleries
    resources :private_galleries do
      get :invite, :on => :member
      put :send_invite, :on => :member
    end
    resources :photos, :only => [:edit, :update, :destroy] do
      put 'sort', :on => :collection
    end
  end

然后在/assets/javascripts/templates/admin/page/index.hbs 我有以下内容

<!DOCTYPE html>
<html>
<head>
    <meta name="description" content="Ember - Latest" />
    <meta charset=utf-8 />
    <title>Ember</title>
    <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>Ember Works</h2>
</script>
</body>
</html>

如果我能把它渲染出来,我应该能够解决剩下的问题

最佳答案

2 分钟了解 Emberjs 和 Rails

rails new app
cd app

# remove gem 'coffee-rails' from Gemfile if not needed

echo "gem 'ember-rails'" >> Gemfile
echo "gem 'ember-source', '1.3.0'" >> Gemfile
bundle
rails g ember:bootstrap
rails g controller home index
(Remove the lines in the view file)

# config/routes.rb
root 'home#index'

# config/environments/development.rb
echo "Hello world" >> app/assets/javascripts/templates/index.hbs

http://localhost:3000 :)

Rails 正常流程

这是 Rails 中的 emberjs 的工作原理。 emberjs 只是一个 javascript 甚至可以进行路由(更改 url,如 /#/posts )。

在 Rails 中,当向映射到 'admin/pages#index'/admin 发出请求时,在您的情况下将执行这些操作。

  • 转到特定的 Controller 操作。
  • 渲染布局文件views/layouts/application.html.erb
  • 然后在其中生成您的 admin/pages#index View 。

使用 Emberjs

当你也有 emberjs 时,同样的事情也会发生,没有什么特别的,没有改变这个顺序,除了你不需要从你的 admin/pages#index View 文件中渲染任何东西,它可以为空。

但是你需要 layouts/application.html.erb 因为你的所有 javascript 都在它下面

<%= javascript_include_tag "application" %>

现在是/admin的流程了

  • 转到 Controller 操作。
  • 呈现布局文件,其中也包含 javascript,也涉及 emberjs,以及再次与 js 相关的 Handlebars 。
  • 生成你的 View 文件,它可以是空白的。因为 emberjs 会为我们插入编译好的 handlebar 模板。

让 emberjs 在 Rails 中工作。

  • 您的布局文件需要使用 application.js 加载 javascript。
  • 然后创建文件app/assets/javascripts/templates/index.hbs

    Hello World

它应该有效!我建议您尝试创建新的 Rails 项目以获得一些想法,然后开始迁移。

关于ruby-on-rails - 将现有的 Rails 路由/应用程序迁移到 emberjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21702690/

相关文章:

ruby-on-rails - 找到在 respond_with @jobs 上加载的文件

ruby-on-rails - 将文件写入 S3 时的字符编码问题

ruby - 将 Ember.js 与简单的 Sinatra 后端集成

ember.js - 如何确定 ember 应用程序的环境

javascript - Ember 数据 find() 方法返回数组,但我需要一条记录

ruby-on-rails - rake db :migrate produces "rake aborted! could not find table" error

ruby-on-rails - Ruby - 你能告诉我这是怎么回事吗

javascript - EmberJS 在 Controller 中的 promise

rake - 了解迷你铲过滤器

javascript - ember-cli 迁移 : global app module import