2

私はRuby on Railsが初めてです。collection_actionActiveAdminからクラスを呼び出そうとしています。コードは次のとおりです(アプリ/管理者/モデル):

collection_action :status_race, :method => :post do
    #Do some import work..
    redirect_to :class => :import_route
end 

そして、これは私が呼び出したいクラスのコードです(app/lib/route):

class ImportRoute
def  initialize
    @seperator = " "
    @time_format = "%d-%m-%y"
end
def run(filename)
    puts "Running route import file"

    raise "File" + filename + "doesn't not exist" unless File.exist(filename)

    ri = RouteImporter.find(:name => self.class.name)

    if(ri.nil?)
        puts "Error, file doesn't exists"
    end
    CSV.foreach(filename, {:col_sep => @seperator}) do |row|
        if row.lenght >5
            ri.country_name = row[0] + " " + row[1]
            ri.type = row[2]
            ri.company = row [3]
        else
            ri.country_name = row[0]
            ri.type = row[1]
            ri.company = row[2]
            ri.date = row[4].gsub(";", " ")
        end
    end
end

終わり

クラスを呼び出すために使用redirect_toしていましたが、機能していません。その方法についての手がかりがありません。何か案が?ありがとう!

4

1 に答える 1

0

このコードはhttp://activeadmin.info/docs/8-custom-actions.html#collection_actionsから取得したものです

ActiveAdmin.register Post do
  collection_action :import_csv, :method => :post do
    # Do some CSV importing work here...
    redirect_to {:action => :index}, :notice => "CSV imported successfully!"
  end
end

この収集アクションは、「/admin/posts/import_csv」で Admin::PostsController#import_csv コントローラー アクションを指すルートを生成します。

つまり、app/controllers/admin/posts_controller.rb にメソッド import_csv を追加する必要があります。このメソッド内で、モデルをインスタンス化できます。

def import_csv
  import_route = ImportRoute.new
  # do stuff on this object
end

これをコードに簡単に適応させることができます

于 2012-11-07T18:35:42.247 に答える