Rails根据URL更改页面视图

时间:2015-03-19 06:37:00

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2

在一个项目#index页面上,我 3 不同的视图 [网格,地图,统计] ,每个视图都有一个按钮。当用户点击任何视图时,它会发送 AJAX 请求并加载该视图所需的内容。通过默认,网格视图会被加载。

现在我的客户想要根据以下网址直接加载视图:

 www.somedomain.com/projects#grid
 www.somedomain.com/projects#stats
 www.somedomain.com/projects#map

但是当我检查控制器时,它没有获得#grid,#stats和#maps的信息。我们如何在rails中实现这一目标。这可能吗 ?他不想跟:

 www.somedomain.com/projects?view=grid
 www.somedomain.com/projects?view=stats
 www.somedomain.com/projects?view=maps

1 个答案:

答案 0 :(得分:0)

我担心这是不可能的。对于您的后端应用程序,仅发送整个www.somedomain.com/projects中的www.somedomain.com/projects#grid部分。 "观光"在#之后用于浏览器。

这样说 - 它适用于网络浏览器 - 检查answer如何能够抓住"抓住"来自url的散列与javascript。

Here解释了如何才能获得"得到"和"设置"来自url的哈希值 - 如果你想从你的应用程序中操作它。

总结一下:

var myCurrentLocation = window.location.hash.substr(1);

switch (myCurrentLocation) {
    case 'stats':
        $.ajax(/** handler for stats */);
        break;
    case 'map':
        $.ajax(/** handler for map */);
        break;
    default:
        $.ajax(/** handler for grid, and default */);
        break;
}


/*
 * Other code
 */

$('#showStats').click(function () {
    location.hash = '#stats';
});
祝你好运!