使用参数从控制器调用Rake任务

时间:2014-02-05 15:20:36

标签: ruby-on-rails ruby

我的控制器中有一个实例变量,用于查询我的表中的值,我需要将该值发送到我的rake任务。

所以这是我控制器中的2条相关行:

 @turl = Fteam.where(:id => @ids).select(:TeamUrl)
system "rake updateTm:update[@turl]"

这是我的rake文件:

desc "Import Players"
  task :update, [:Tmurl] => :environment do |t, args|

require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'mechanize'

agent = Mechanize.new

puts "This is the selected Team URL: #{args.Tmurl}"
  end
end

这是rake任务返回的内容:

This is the selected Team URL: @turl

我的猜测是控制器没有正确传递变量。那么如何将变量的实际值传递给rake任务,以便输出正确?

3 个答案:

答案 0 :(得分:2)

可能你可能需要使用插值

"rake updateTm:update[#{@turl}]"

答案 1 :(得分:0)

这是一个.rb文件。而且在ruby中我们不能直接调用变量。

你应该使用

system "rake updateTm:update[#{@turl}]"

答案 2 :(得分:0)

感谢所有人的帮助和想法,我想出了一个解决方案。

而不是@turl = Fteam.where(:id => @ids).select(:TeamUrl) 我将其更改为@turl = Fteam.where(:id => @ids).pluck(:TeamUrl)

这给了我所需的实际值,而不是活动记录,这导致了错误,因为它无法传递无法翻译或理解的值。