У меня есть базовое приложение для рабочих рельсов, где я полагаюсь на параметры 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>
На моей навигационной панели есть link_to для нескольких категорий, например,
"top10",: action => "index",: category => catname)%>
Если в URL есть params [: category], я отображаю список слева, и когда я щелкаю по идентификатору в этом списке, он отображает правый DIV с
Если параметров нет, будет отображаться то, что я называю целевой страницей (своего рода домашняя страница)
Теперь это работает хорошо, но если я добавлю 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 %>