0

在一个项目#索引页,我已经不同意见[网格线,地图,统计资料]和每个视图有一个按钮。当用户点击任何视图时,它发送一个AJAX请求并加载该视图所需的内容。通过默认网格视图被加载。Rails的改变页面视图

现在我的客户希望直接加载基于以下网址的观点:

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

但是,当我检查控制器,它不得到#格,#统计和#maps的信息。我们如何在轨道上实现这一点。这可能吗 ?他不想去:

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

回答

0

恐怕是不可能的。对于您的后端应用程序,仅发送整个www.somedomain.com/projects#grid的部分www.somedomain.com/projects#之后的“东西”是为浏览器设计的。

这样说 - 它是为网络浏览器 - 检查这个answer你如何可以用JavaScript从URL抓取哈希。

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'; 
}); 

祝你好运!

+0

感谢您的快速反馈,但如果我们与Javascipt一起去。这意味着如果用户在URL中有#个请求,则为2个请求。首先它会加载默认内容,然后JS会检查#视图。并再次发送请求以呈现该特定视图。对 ? – Kashif 2015-03-19 06:49:30

+0

@Kashif - 这取决于你当前的应用程序如何工作,但它是可能的。那么 - 正如答案中提到的那样 - 你不能发送URL哈希到服务器。这是不可能的。您只能在客户端(Web浏览器)中与存储在哈希中的值进行交互。请检查我的答案,并以一些概念更新如何继续。 – 2015-03-19 06:57:35