我有一个视图,views/admin/index.html.erb
上面有一个按钮,我使用以下内容创建...
意见/管理/index.html.erb
<%= button_to 'Manual Scrape', {:controller => "jobs", :action => "create", :job_type => "StatsAll"}, :method=>:post, :class => "btn btn-primary" %>
控制器/jobs_controller.rb
def create
call_rake :import_records, :job_type => params[:job_type]
flash[:notice] = "Import is executing..."
end
控制器/application_controller.rb
def call_rake(task, options = {})
options[:rails_env] = Rails.env
args = options.map { |n, v| "#{n.to_s.upcase}='#{v}'" }
system "/usr/bin/rake #{task} #{args.join(' ')} --trace >> #{Rails.root}/log/rake.log &"
end
当我单击按钮时,我希望它保留在当前视图上,即views/admin/index.html.erb
,因为我没有工作视图并且不相信我想要一个(也许有人会说服我……)。我想要做的是单击按钮,然后在该视图上,我将按钮更改为一个按钮,该按钮将在jobs_controller.rb
必要时调用另一个操作以终止作业,否则它将执行直到完成。
然而,目前它试图找到没有的工作视图。我该如何纠正?
注意:我使用了 Railscast #127 中的一些代码来查看如何运行后台任务。