繁体   English   中英

将Rails路线映射到Ember路线

[英]Mapping Rails routes to Ember routes

注意:这与Ember Routes和Rails Routes不同

我有一个单页的Ember应用程序,它位于Rails堆栈的顶部。 忽略对Rails的需求-这是必需的。

我的Ember应用程序视图位于/ember_app 我想将正常的资源丰富的路线映射到Ember路线,如下所示:

GET /home     ~> /ember_app/#/home
GET /account  ~> /ember_app/#/account
GET /login    ~> /ember_app/#/login

最好的方法是什么? 一种想法是:

  1. Rails routes.rb将所有请求发送到单个操作ember_app#index以及包含Ember路由名称的参数(与redirect_route: "account" )。 注意homeaccountlogin不需要从Rails进行任何数据方面的操作,只需要将其重定向到Ember中的该路由。
  2. ember_app#index操作将route参数存储到实例变量@redirect_route
  3. ember_app.html.erb ,对@redirect_route进行插值并将其存储在JavaScript变量EmberApp.redirectRoute
  4. 因此,在Ember的application_view.js (或适当的位置)中,我们使用EmberApp.redirectRoute在客户端进行重定向。

这种方法听起来合理吗? 我们还可以为每个路线设置Rails动作,并且该路线仅呈现index动作并传递route参数。 但是,似乎(应该)有一种方法可以通过编程将Rails路线映射到Ember路线。 我们不想在Rails routes.rb和Ember router.js重复它们。 有什么想法吗?

我不确定我是否正确理解了这个问题,但是听起来您需要做的就是将所有内容映射到您的ember应用,然后让ember进行路由。

使用通配符路由应该可以解决问题。 只需将所有内容映射到该控制器,即可加载您的应用,然后由Ember Router决定下一步要做什么。

get '(*anything)', to: 'ember_app#index'

这就是我设置的方法,除了我不是从根本上做的,我的看起来有点像:

get 'application_name/(*anything)', to: 'ember_app#index'

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM