我的控制器中有一个实例变量,用于查询我的表中的值,我需要将该值发送到我的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任务,以便输出正确?
答案 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)
这给了我所需的实际值,而不是活动记录,这导致了错误,因为它无法传递无法翻译或理解的值。