2012-03-04 4 views
0

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

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

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

Это хорошо работает сейчас, но если я добавить пульт => верно для моих NavBar ссылок, он будет работать на левой DIV, но # целевая страница всегда будет отображаться, потому что по какой-то причине она не увидит параметры URL. Кроме того, поскольку отображаемый URL-адрес всегда один и тот же, все мои ссылки_то_небес (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 %> 

ответ

0

При переключении функции Аякса и не делать перезагрузки страницы, вы можете захотите рассмотреть возможность размещения этих параметров url в качестве переменных сеанса. Таким образом, вы можете обновлять и показывать их по своему усмотрению.

+0

У вас есть ссылка, объясняющая, как это сделать? Я также думал об использовании PJAX (http://railscasts.com/episodes/294-playing-with-pjax), но сначала я посмотрю ваше предложение. –

Смежные вопросы