Rails UJS与URL params问题

时间:2012-03-04 17:32:34

标签: ruby-on-rails ujs

我有一个基本的工作轨道应用程序,我非常依赖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>
  1. 我的导航栏有多个:category的link_to,就像这个

    一样  “top10”,:action =&gt; “index”,:category =&gt; catname)%&gt;
  2. 如果URL中有params [:category],我会在左侧显示一个列表,当我点击此列表中的ID时,它将显示正确的DIV

  3. 如果没有参数,它会呈现我称之为着陆页(某种主页)

  4. 现在效果很好但是如果我添加了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 %>
    

1 个答案:

答案 0 :(得分:0)

如果要将功能切换到ajax而不进行页面重新加载,您可能希望考虑将这些url参数作为会话变量。这样您就可以根据需要更新并显示它们。