use*_*655 6 ruby ruby-on-rails http
我想从rake任务调用控制器动作.我的问题是什么方法最好准备http请求?感谢所有提示.
编辑:有人提示吗?我试过这个而不是工作:
controller_obj = Controller.new
controller.your_method
Run Code Online (Sandbox Code Playgroud)
我有这个例外:
rake aborted!
uninitialized constant Controller
Run Code Online (Sandbox Code Playgroud)
Edit2:我试过了:
sess = ActionController::Integration::Session.new
sess.post('/route', 'codes=3')
Run Code Online (Sandbox Code Playgroud)
但我得到了(我在rake文件中要求'action_controller/integration'):
rake aborted!
cannot load such file -- action_controller/integration
Run Code Online (Sandbox Code Playgroud)
task :use_controller_method_in_rake => :environment do
session = ActionDispatch::Integration::Session.new(Rails.application)
session.get "/foo"
session.post "/bar", {my_post_params: 'foobar'}
end
Run Code Online (Sandbox Code Playgroud)
您应该将该操作的行为移动到模型类,然后将该操作与该模型类的实例一起使用.这是标准方法.
移动 controller/action到model class(推荐).在您的佣金任务中,执行以下操作....
model_obj = Model.new
model_obj.your_instance_method
Run Code Online (Sandbox Code Playgroud)
而且还是你想打电话给控制器动作,那么你应该在你的rake任务创建控制器的一个实例,并调用与该实例的行动(如果该方法是一个实例方法.)
controller_obj = Controller.new
controller.your_method
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6943 次 |
| 最近记录: |