Rails UJS с проблемой URL-параметров - PullRequest
0 голосов
/ 04 марта 2012

У меня есть базовое приложение для рабочих рельсов, где я полагаюсь на параметры URL для отображения или не логики. Я смог изменить его, используя UJS и link_to remote => true, но когда я нажимаю эти ссылки, показанный 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. На моей навигационной панели есть link_to для нескольких категорий, например,

    "top10",: action => "index",: category => catname)%>
  2. Если в URL есть params [: category], я отображаю список слева, и когда я щелкаю по идентификатору в этом списке, он отображает правый DIV с

  3. Если параметров нет, будет отображаться то, что я называю целевой страницей (своего рода домашняя страница)

Теперь это работает хорошо, но если я добавлю remote => true к своим ссылкам navbar, это будет работать для левого 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 голосов
/ 04 марта 2012

Если вы переключаете функциональность на ajax и не выполняете перезагрузку страницы, вы можете вместо этого использовать эти параметры URL в качестве переменных сеанса.Таким образом, вы можете обновлять и показывать их по желанию.

...