在创建路由时让routes.rb查看目录是否可取?

时间:2011-12-09 16:36:28

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

我有一个名为'reports'的控制器。在其中,我想通过部分显示预制报告。就目前而言,我不想制作一个完全成熟的SQL查询/报告生成器,所以我认为最简单的方法是每次我想创建一个新报告时,我只在部分文件中这样做。然后我上传该文件,所有路由/方法都是动态生成的。这意味着控制器中有一个方法可以查看views目录中的partials,然后返回一个url-safe字符串,用于路由和控制器模型中。

我的问题是“这会产生速度瓶颈”吗?这样,每次请求URL时,都会搜索目录。

控制器:

class ReportsController < ApplicationController

    def initialize
    super()
    ReportsController::reports(true).each do |report|
        self.class.send(:define_method, report.gsub('-', '_').to_sym) do
        render "#{name_to_safe_url(report).gsub('-', '_')}.html.erb"
        end
    end
    end

    # Currently I'm just using a static array to give the reports.
    # This will change such that it will look through the views directory
    # for partials.  It will read the file name and return it as part of the list
    def self.reports(return_url = false)
    list = [
        "Revenue/Sale",
        "Item Quantities",
        "Number of Sales/Day",
        "Compare Revenue to Past Dates"
    ]
    return_url ? list.map{|i| name_to_safe_url(i)} : list
    end

    def self.name_to_safe_url(name)
    name.gsub(/\//, ' per ').squeeze(' ').gsub(/[^a-z]/i, '-').squeeze('-').chomp('-').downcase
    end

end

1 个答案:

答案 0 :(得分:0)

请在编写此类代码之前重复Skinny Controller Fat Model咒语。