2016-07-05 51 views
1

我在我的管理區使用Rails Admin。 側欄面板應該有一些指向模型實例的鏈接。 在rails_admin.rb我已經試過類似:在配置中的Rails Admin路由

RailsAdmin.config do |config| 
    @navigation_links = Hash[*Conference.all.map {|conference| [conference.name, bindings[:view].main_app.show_path(model_name: 'conference', id: conference.id)]}.flatten] 
    config.navigation_static_links = @navigation_links 
end 

不過,在這裏我沒有獲得綁定。那麼,我怎樣才能獲得管理資源的URL呢?我無法看到它的documentation

感謝

+0

你想添加鏈接到側邊欄或靜態鏈接? –

+0

@farhatmihalko我想添加我的會議展覽的鏈接。 – hcarreras

+0

你試過使用靜態鏈接嗎? –

回答

0

我的回答可能不是你想要做什麼,但它可以是有幫助的。

我檢查了rails_admin.gem,我發現有兩種方法負責渲染側邊欄菜單。

def main_navigation 
    nodes_stack = RailsAdmin::Config.visible_models(controller: controller) 
    node_model_names = nodes_stack.collect { |c| c.abstract_model.model_name } 

    nodes_stack.group_by(&:navigation_label).collect do |navigation_label, nodes| 
    nodes = nodes.select { |n| n.parent.nil? || !n.parent.to_s.in?(node_model_names) } 
    li_stack = navigation nodes_stack, nodes 

    label = navigation_label || t('admin.misc.navigation') 

    %(<li class='dropdown-header'>#{capitalize_first_letter label}</li>#{li_stack}) if li_stack.present? 
    end.join.html_safe 
end 

上述方法負責獲取的車型名單,特別是:

def navigation(nodes_stack, nodes, level = 0) 
    nodes.collect do |node| 
    model_param = node.abstract_model.to_param 
    url   = url_for(action: :index, controller: 'rails_admin/main', model_name: model_param) 
    level_class = " nav-level-#{level}" if level > 0 
    nav_icon = node.navigation_icon ? %(<i class="#{node.navigation_icon}"></i>).html_safe : '' 
    li = content_tag :li, data: {model: model_param} do 
     link_to nav_icon + capitalize_first_letter(node.label_plural), url, class: "pjax#{level_class}" 
    end 
    li + navigation(nodes_stack, nodes_stack.select { |n| n.parent.to_s == node.abstract_model.model_name }, level + 1) 
    end.join.html_safe 
end 

這樣你就可以patch

nodes_stack = RailsAdmin::Config.visible_models(controller: controller) 

其次負責菜單(又名li)渲染項方法這種方法來獲得你所需要的。

module RailsAdmin 
    module ApplicationHelper 
    def main_navigation 
     # your code 
    end 
    end 
end 

rails_admin.gem module

附:我愛你,可以從rails doctrinemonkey patching閱讀的內容:

這種權力常常被人們嘲笑爲根本吃不消僅僅 凡人程序員來處理。

+0

不是我所需要的。即使我修補main_navigation,我也不想顯示所有模型的所有實例。我想展示我的模型會議的實例。感謝您的時間:) – hcarreras

+0

@dioshari說'補丁'我的意思是說,你可以添加代碼,這將顯示你需要什麼(會議的實例) –

+0

@dioshari通過使用javascript動態添加? –