ごく
私的なメモです
ナビゲーションバーはどこへ?
./vendor/bundle/ruby/2.4.0/gems/administrate-0.8.1/app/views/administrate/application/_navigation.html.erb
どんなコード?
administrate/_navigation.html.erb at master · thoughtbot/administrate · GitHub
<nav class="navigation" role="navigation"> <% Administrate::Namespace.new(namespace).resources.each do |resource| %> <%= link_to( display_resource_name(resource), [namespace, resource.path], class: "navigation__link navigation__link--#{nav_link_state(resource)}" ) %> <% end %> </nav>
Administrate::Namespace.new(namespace).resourcesの中身は?
./vendor/bundle/ruby/2.4.0/gems/administrate-0.8.1/lib/administrate/namespace.rb
どんなコード?
administrate/namespace.rb at master · thoughtbot/administrate · GitHub
module Administrate class Namespace ... def routes @routes ||= all_routes.select do |controller, _action| controller.starts_with?(namespace.to_s) end.map do |controller, action| [controller.gsub(/^#{namespace}\//, ""), action] end end
で、resources
はroutes
をResourcesオブジェクトに仕立てたもの。
つまり?
routes.rbに書いてあって名前が"admin"ではじまるコントローラのくっついているroutesをナビゲーションバーに表示するよ!
routes.rbから消したらエラーになるんだけど?
普通はroutes.rbのnamespace admin
以下のresourcesを消せばそれはナビゲーションバーから見えなくなる。
ただ、rootが設定されている場合はそれがadminではじまるコントローラ扱いになってroutesに残ってresources消したからshowかなんかが見えなくなってpathとれなくてエラー吐く。
rootもあわせて変更すること!