Ruby on rails 从ActiveAdmin(RoR)中的集合调用类
我是RubyonRails的新手。我正在尝试从ActiveAdmin中的Ruby on rails 从ActiveAdmin(RoR)中的集合调用类,ruby-on-rails,Ruby On Rails,我是RubyonRails的新手。我正在尝试从ActiveAdmin中的集合\u操作调用一个类。以下是代码(app/admin/models): 这是我想调用的类的代码(app/lib/route): 结束 我使用了重定向\u to来调用这个类,但是没有工作,我不知道该怎么做。有什么想法吗?谢谢 此代码取自 此收集操作将在以下位置生成路由: “/admin/posts/import\u csv”指向 管理员::PostsController#导入csv控制器操作 因此,这意味着您必须在app/c
集合\u操作
调用一个类。以下是代码(app/admin/models):
这是我想调用的类的代码(app/lib/route):
结束
我使用了重定向\u to
来调用这个类,但是没有工作,我不知道该怎么做。有什么想法吗?谢谢 此代码取自
此收集操作将在以下位置生成路由:
“/admin/posts/import\u csv”指向
管理员::PostsController#导入csv控制器操作
因此,这意味着您必须在app/controllers/admin/posts\u controller.rb中添加import\u csv方法。在此方法中,您可以实例化您的模型:
def import_csv
import_route = ImportRoute.new
# do stuff on this object
end
您可以轻松地将其改编为您的代码谢谢!只有几个问题:索引意味着什么?在我的例子中,类似于:action=>:import\u route?我没有任何名为pos_controller.rbI的类,在Admin中也没有posts文件。最后,我解决了它,将ImportRoute.new添加到集合操作中,而没有重定向到,目前还没有抱怨!:index是在方法import_CSV中导入CSV数据后将重定向的操作(方法)的名称。RFC2616说,每次发布后,都应该重定向到GET资源。。。
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
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
def import_csv
import_route = ImportRoute.new
# do stuff on this object
end