我有一个分页商店的工作列表,当点击一个商店时会显示商店详细信息。
在列表的一侧(#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:XMLHttpRequest
和X-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'
。
有人可以解释为什么这可能是正确的,或者如果它仍然不对,那么它有什么问题。
由于