所以这让我很难过,我在路线方面根本不是最好的,但我想要实现的目标似乎很简单。我所拥有的是目前只能由超级用户访问的功能,现在我想将该功能扩展到portal_administrator。现在要访问该页面,您需要一个看起来像这样的 link_to
= link_to('Data', portal_datum_path(current_portal.id), :id => :super_user_data_link)
用匹配路由
match '/portal_data/:id', :controller => 'portal_data', :action => 'show', :as => 'portal_datum'
现在这很好用,您最终会得到一个具有 id 参数的 url。在它路由到的页面中使用。事实上,有一个 before 过滤器可以确保有一个 id。
def load_portal
@portal = Portal.find(params[:id])
end
这将使超级用户能够通过查看 url 来查看他所在的门户。现在我将其扩展到用户,我不希望他们看到他们所在的门户 ID,所以我想我会在下面使用一个单一的资源。
= link_to('Data', portal_data_path, :id => :super_user_data_link)
与
match '/portal_data' => "portal_data#show"
所以它路由到同一个地方,但保持 url 干净。但显然这个剂量是有效的。即使我对之前的文件管理器进行硬编码以接受第一个门户,它也会抛出错误
No route matches {:controller=>"portal_data", :action=>"show"}
但如果我在那儿耙我的路线?
我确定我做错了什么很明显有什么想法吗?