我有一个基本的工作 Rails 应用程序,我非常依赖 URL 参数来显示或不显示逻辑。我能够使用 UJS 和 link_to remote => true 对其进行 ajaxify,但是当我单击这些链接时,显示的 URL 没有更新(这是有道理的)并且其他部分无法读取 URL 参数
例如,在index.html.erb
(在 UJS 之前,你可以看到它是如何工作的),
<div class="container-fluid">
<% if params[:category] %><div class="row-fluid span6">
<div class="span6">
<%= render :partial => "buglist" %>
</div>
<% end %>
<% if params[:id] %>
<div class="span6">
<%= render :partial => "bugdetails" %>
</div>
<% end %>
<% unless params[:category] or params[:id]%>
<%= render :partial => "landingpage" %>
<% end %>
</div>
我的导航栏有多个:category 的 link_to,就像这样
"top10", :action => "index", :category => catname) %>如果 URL 中有 params[:category],我会在左侧显示一个列表,当我单击此列表中的 ID 时,它将显示右侧 DIV
如果没有参数,它将呈现我所说的登陆页面(某种主页)
这现在效果很好,但是如果我将 remote => true 添加到我的导航栏链接,它将适用于左侧 div,但#3(登录页面)将始终显示,因为由于某种原因它不会看到 URL 参数。此外,由于显示的 URL 始终相同,我的所有 link_to_unless(params...) 都将不起作用。
与 USJ:
index.html.erb
<div class="row-fluid span6" id="buglist"></div>
<div class="row-fluid span6" id="bugdetails"></div>
<div class="row-fluid id="landingpage"></div>
index.js.erb
<% if params[:category] %>
$("#buglist").html("<%= escape_javascript(render(:partial => 'buglist')) %>");
<% end %>
<% if params[:id] %>
$("#bugdetails").html("<%= escape_javascript(render(:partial => 'bugdetails')) %>");
<% end %>
<% unless params[:category] or params[:id]%>
$("#landingpage").html("<%= escape_javascript(render(:partial => 'landingpage')) %>");
<% end %>