我创建了一个简单的管理面板,其中包含一个使用Rails远程响应的菜单。 典型的链接是这样的:
<%= link_to t('my-groups'), :controller => 'dashboard', :action => 'mygroups', :remote => true %>
它的控制器动作是:
def mygroups
if request.xhr?
respond_to do |format|
format.js
end
else
redirect_to :dashboard
end
end #end mygroups
我还有一个名为_mygroups.html.erb的部分文件和一个名为mygroups.js.erb的js.erb文件,内容如下:
$('.right_col').html("<%= escape_javascript(render(:partial => 'mygroups')) %>");
一切正常,部分页面在我的主模板中动态加载,就像它应该的那样。 我想要的是能够使用浏览器历史记录浏览这些结果,并且能够从浏览器的地址栏复制URL并获得相同的动态加载内容,如果我将URL粘贴到我的手动浏览器的地址栏然后按回车键。
例如,如果我点击&#34; dashboard / mygroups&#34;菜单链接它将加载_mygroups partial,将网址更改为http://localhost:3000/dashboard/mygroups并将状态推送到浏览器的历史记录。如果我只是将此URL插入地址栏,它将加载主模板,然后将_mygroups partial加载到其内部div容器。这是我想要的一种行为。
我看到的唯一解决方案是使用简单的页面重新加载而不使用&#34; remote&#34;链接。但我知道很多网站(例如github.com)使用AJAX并允许从地址栏复制/粘贴网址
如何使用Rails实现相同的行为? 也许我的整个概念都错了?