我有一个基本的工作轨道应用程序,我非常依赖URL params来显示或不显示逻辑。 我能够使用UJS和link_to remote =>来解析它。是的,但是当我点击这些链接时,显示的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 =&gt; “index”,:category =&gt; catname)%&gt;如果URL中有params [:category],我会在左侧显示一个列表,当我点击此列表中的ID时,它将显示正确的DIV
如果没有参数,它会呈现我称之为着陆页(某种主页)
现在效果很好但是如果我添加了remote =&gt;对于我的导航栏链接,它适用于左侧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 %>
答案 0 :(得分:0)
如果要将功能切换到ajax而不进行页面重新加载,您可能希望考虑将这些url参数作为会话变量。这样您就可以根据需要更新并显示它们。