在do块中运行代码? (活动管理员仪表板)

时间:2012-09-19 15:12:13

标签: ruby-on-rails ruby ruby-on-rails-3 activeadmin

有效管理信息中心

  ActiveAdmin.register_page "Dashboard" do

  menu :priority => 1, :label => proc{ I18n.t("active_admin.dashboard") }

  content :title => proc{ I18n.t("active_admin.dashboard") } do

    section h2 "Top Movie" do

            table_for @top_ps.where('ptype = ?', 'movie') do |t|

               column("Title"){|p| link_to p.title, admin_program_path(p.id)}

               column "Start" do |p|

                    p.program_schedules.each do |schedule|

                            link_to distance_of_time_in_words(Time.now, schedule.start,true), admin_program_schedule_path(schedule.id)
                    end

                end


            end
        end

  end # content
end

如果我跑这个我得

[#<ProgramSchedule id: 746, program_id: 430, start: "2012-09-17 09:30:00", stop: "2012-09-17 10:30:00">, 
#<ProgramSchedule id: 8124, program_id: 430, start: "2012-09-22 23:30:00", stop: "2012-09-23 00:30:00">]

而不是

<a href="/path">Start</a>
<a href="/path">Start</a>

我明白我错在哪里,但如何在一个块内执行该代码?

2 个答案:

答案 0 :(得分:1)

此模板DSL称为Arbre。我不确定它是否在ActiveAdmin之外使用了很多。随着ActiveAdmin 0.5.0的发布,它被拆分为它自己的宝石https://github.com/gregbell/arbre

如果您不想处理它,您可以渲染部分。因此,在您的仪表板代码中添加类似

的内容
section h2, "Top Movie" do
  div do
    render :partial => "admin/dashboard/top_movie"
  end
end

然后

# /views/admin/dashboard/_top_movie.html.erb

<div style="width:300px;">
  Normal arbitrary view code. <%=some_ruby%>
</div> 

答案 1 :(得分:0)

= link_to distance_of_time_in_words(Time.now, schedule.start,true), admin_program_schedule_path(schedule.id)

<%= link_to distance_of_time_in_words(Time.now, schedule.start,true), admin_program_schedule_path(schedule.id) %>分别取决于haml或erb。