2016-07-05 62 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动态添加? –