0

ロジックを表示するかどうかを URL パラメータに大きく依存している、基本的な作業用 Rails アプリがあります。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. 私のnavbarには、このように複数の:category用のlink_toがあります

    "top10", :action => "index", :category => catname) %>
  2. URL に params[:category] ​​がある場合、左側にリストを表示し、このリストの ID をクリックすると、右側の DIV が表示されます。

  3. パラメータがない場合は、私がランディング ページ (ある種のホームページ) と呼んでいるものをレンダリングします。

これで問題なく動作しますが、navbar リンクに remote => true を追加すると、左側の div では機能しますが、何らかの理由で URL パラメータが表示されないため、#3 (ランディング ページ) が常に表示されます。また、表示される 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 に答える