0

我有一个基本的工作 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>
  1. 我的导航栏有多个:category 的 link_to,就像这样

    "top10", :action => "index", :category => catname) %>
  2. 如果 URL 中有 params[:category],我会在左侧显示一个列表,当我单击此列表中的 ID 时,它将显示右侧 DIV

  3. 如果没有参数,它将呈现我所说的登陆页面(某种主页)

这现在效果很好,但是如果我将 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 %>
4

1 回答 1

0

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

于 2012-03-04T17:48:13.373 回答