注意:这与Ember Routes and Rails Routes
不同我有一个单页的Ember应用程序,它位于Rails堆栈之上。无视Rails的需要 - 这是必需的。
我的Ember应用程序视图位于/ember_app
。我想将正常的资源路线映射到Ember路线,如下所示:
GET /home ~> /ember_app/#/home
GET /account ~> /ember_app/#/account
GET /login ~> /ember_app/#/login
最好的方法是什么?一个想法是:
routes.rb
将所有请求发送到单个操作ember_app#index
以及包含Ember路由名称的参数(与redirect_route: "account"
一样)。注意home
,account
和login
在Rails中不需要任何数据,只想在Ember中重定向到该路由。ember_app#index
操作将route
参数存储到实例变量@redirect_route
ember_app.html.erb
中,@redirect_route
被插值并存储在JavaScript变量EmberApp.redirectRoute
application_view.js
(或适当的地方),我们会相应地使用EmberApp.redirectRoute
在客户端重定向。这种方法听起来合理吗?我们还可以为每个路由执行Rails操作,该路由只是呈现index
操作并传递route
参数。但是,似乎可以(应该)以编程方式将Rails路由映射到Ember路由。我们不希望在Rails routes.rb
和Ember router.js
中复制它们。那里有什么想法吗?
答案 0 :(得分:1)
我不确定我是否正确理解了这个问题,但听起来你需要的只是将所有内容映射到你的ember应用程序然后让ember进行路由。
使用通配符路由应该可以解决问题。只需将所有内容映射到该控制器,您的应用程序将被加载,然后Ember路由器将决定下一步该做什么。
get '(*anything)', to: 'ember_app#index'
这就是我设置的方式,除了我不在root上做,我的看起来更像:
get 'application_name/(*anything)', to: 'ember_app#index'
希望这有帮助