我需要从另一个controller
创建controller
实例以使用其方法。当我创建
c = SomeController.new
c.some_method
some_method使用params[]
,然后我遇到错误NoMethodError: undefined method 'parameters' for nil:NilClass
。
如何将参数传递给controller
?
答案 0 :(得分:1)
你要做的事情不推荐任何框架。您可能在多个控制器中有一些您想要的代码。要实现所需的行为,请将公共代码提取到库中,然后可以在任何所需的控制器中调用该代码。
答案 1 :(得分:0)
您没有在Rails中实例化控制器 - 它在路由器匹配路由请求时由路由器完成。
它刚刚没有完成,因为它违反了Rails中MVC的工作方式 - 一个请求=一个控制器。您还需要将整个env哈希从机架传递到控制器,以使其正常工作。
但是真的 - 不要。有更好的方法。
如果需要在控制器之间共享方法,可以采用更好的方法,例如使用继承:
class ApplicationController
def some_method
end
end
class FooController < ApplicationController
end
class BarController < ApplicationController
end
或者mixins:
# app/controllers/concerns/foo.rb
module Foo
def some_method
end
end
class BarController < ApplicationController
include Foo
end
class BazController < ApplicationController
include Foo
end
如果您需要将请求从一个控制器操作移动到另一个控制器操作,则应该重定向用户。