我的控制器包含:
@prefix = params[:asset_id]
其中 params [:asset_id] 包含子目录名称,例如[下载,公司,手册]。
我的视图包含:
<ol class="breadcrumb">
<li><%= link_to 'Start', admin_assets_path %></li>
<% for item in @prefix.split("/") %>
<li> <%= link_to "/ #{item}", "" %></li>
<% end %>
</ol>
结果如下:
开始/下载/公司/小册子
我这里的问题当然是所有面包屑都将链接到相同的以下URL:
http://localhost:3000/int/en/admin/assets/downloads%2Fcompany%2Fbrochure%2F/path
我希望将它们全部链接到各自的URL,例如:
下载:http://localhost:3000/int/en/admin/assets/downloads%2F/path
公司:http://localhost:3000/int/en/admin/assets/downloads%2Fcompany%2F/path
手册:http://../en/admin/assets/downloads%2Fcompany%2Fbrochure%2F/path
如何使每个面包屑都有自己的网址?
答案 0 :(得分:2)
首先,让我注意到,您需要确定每个特定面包屑项目的链接逻辑。
据我从您的示例可以看出,您正在使用以下约定来确定某个面包屑的链接目标:
面包屑的链接目标包括:
http://localhost:3000/int/en/admin/assets/
)/
连接。如果为item = 'company'
,则为downloads/company
,/path
。为了创建这些链接,您可以使用以下代码:
<ol class="breadcrumb">
<li><%= link_to 'Start', admin_assets_path %></li>
<%
items = @prefix.split("/")
prefix = admin_assets_path
suffix = '/path'
%>
<% items.each.with_index do |item, i| %>
<%
middle = items[0..i].join('/')
path = prefix + middle + suffix
%>
<li> <%= link_to "/ #{item}", path %></li>
<% end %>
</ol>
但是您的实际问题是:
如何使每个面包屑都有自己的网址?
您当前的约定(面包屑形式的链接)有一些局限性,例如国际化困难,我们无法支持逻辑面包屑结构不反映url结构的情况。
您可以使用诸如哈希图或树形结构之类的东西来建模实际的站点结构,或者查看为此目的制作的宝石,例如breadcrumbs_on_rails。