使用Ruby on Rails wiselinks作为商店定位器

时间:2013-12-19 08:32:39

标签: javascript jquery ruby-on-rails ajax

我有一个分页商店的工作列表,当点击一个商店时会显示商店详细信息。

在列表的一侧(#index)和详细信息(#show),它有一张显示位置的地图。

我现在正在尝试应用wiselinks gem,以便通过ajax完成从列表到细节的转换,以便不需要重新加载地图。

我的列表和详细信息页面使用主sub_level_layout布局的application

sub_level_layout如下:

<div class="stores-container">
   # partial loaded here
</div>
<div class="map-container"></div>

我只是使用新信息重新加载.stores-container,完成后它会自动显示地图上的特定位置。

我目前正在使用wiselinks来更新部分内容。

我使用:

宣布wiselinks
$(function() {
  window.wiselinks = new Wiselinks();
});

我的列表和详细信息链接使用data-push='partial' data-target='.stores-container'

我的控制器看起来像这样:

def index
  ...
  if request.wiselinks_partial?
    render :partial => 'my_partial'
  else
    render :layout => 'sub_level_layout'
  end
end

def show
  ...
  if request.wiselinks_partial?
    render :partial => 'my_partial'
  else
    render :layout => 'sub_level_layout'
  end
end

这适用于点击索引页面上的结果页面,还允许我点击其中一个结果的链接转到显示页面。

但是,如果我加载索引页面,单击其中一个结果以显示显示页面然后单击后退按钮,则会失败。它似乎不知道用什么来呈现索引页面它只是显示一个空白页面。

我需要它来刷新partial的内容,以便再次显示索引。

如果我加载索引页面,请单击其他页面(也使用wiselinks进行分页),然后单击其中一个结果以显示显示页面,然后单击后退按钮以使其正常工作。

它似乎不喜欢单击后退按钮转到起始页面(最初以html而不是通过wiselinks加载的页面)并且仅使用部分而不是全屏刷新内容。

如果页面无法加载失败请求的标头,则包含X-Requested-With:XMLHttpRequestX-Wiselinks:template

我是否正确使用wiselinks这样做?

还有另一种方法可以做到这一点,因此当我只需要重新加载部分时点击返回起始页面时,不需要从头开始加载模板吗?

如果可能,我想留在wiselinks。

由于


可能的解决方案

我想我现在通过改变来实现它:

$(function() {
  window.wiselinks = new Wiselinks();
});

$(function() {
  window.wiselinks = new Wiselinks($('.stores-container'));
});

和我的控制器:

def index
  ...
  if request.wiselinks_partial?
    render :partial => 'my_partial'
  else
    render :layout => 'sub_level_layout'
  end
end

def wiselinks_layout
  'my_partial_as_a_layout'
end

def show
  ...
  if request.wiselinks_partial?
    render :partial => 'my_partial'
  else
    render :layout => 'sub_level_layout'
  end
end

新版面 - my_partial_as_a_layout.html.erb

<%= render 'stores/my_partial' %>

我不喜欢它需要我在布局文件夹中复制部分作为布局的方式。

我也不喜欢这样一个事实,即商店定位器的这组页面需要一个特定的div来设置为wiselinks使用的容器,即使每个链接都有data-target属性集反正为'.stores-container'

有人可以解释为什么这可能是正确的,或者如果它仍然不对,那么它有什么问题。

由于

0 个答案:

没有答案