我正在使用AJAX渲染产品目录。集合具有其产品呈现为AJAX局部的子类别。我试图通过常规链接(不带remote:true)从站点其他部分链接到这些页面,显然,由于我的子类别控制器中的show动作仅响应js,因此无法正常工作。
除了_show.html.erb和show.js.erb之外,我尝试通过将format.html添加到子类别控制器并创建show.html.erb文件来解决该问题。子类别/显示与集合/显示完全相同,并且AJAX链接都可以正常工作。但是,它从一个URL渲染了其他子类别的部分,这看起来很混乱,并且还重复了很多代码。
有没有一种方法可以使我从网站的其他部分链接到收藏页并使部分正确的子类别呈现?处理这种情况的最佳方法是什么?
subcategories_controller.rb
def show
@subcategory = Subcategory.friendly.find(params[:id])
@collection = @subcategory.collection
respond_to do |format|
format.js
format.html
end
end
collections / show.html.erb
<% @collection.subcategories.each do |subcategory| %>
<%= link_to subcategory.name, [collection, subcategory], remote: true %>
<% end %>
<div class="product-grid">
</div>
子类别/show.js.erb
document.querySelector(".product-grid").innerHTML = "<%= escape_javascript(render partial: 'show', locals: { subcategory: @subcategory } ) %>";
subcategories / show.html.erb
<!-- same as collections/show.html.erb !-->