I have two controllers, i.e 1) carts_controller 2) orders_controller
class CartsController < ApplicationController
helper_method :method3
def method1
end
def method2
end
def method3
# using method1 and method2
end
end
Note: method3
is using method1
and method2
.
CartsController
has showcart.html.erb
view which is using method3 and works fine.
Now in order's view, I need to display cart (showcart.html.erb
) but as the helper method3
is defined in carts_controller
so it cannot access it.
How to fix it ?
You cannot use methods from other controller, because it's not instantiated in current request.
Move all three methods to parent class of both controllers (or ApplicationController), or to a helper, so they will be accessible to both
As you are using Rails 4, the recommended way of sharing code among your controllers is to use Controller Concerns. Controller Concerns are modules that can be mixed into controllers to share code between them. So, you should put the common helper methods inside the controller concern and include the concern module in all of your controllers where you need to use the helper method.
In your case, as you want to share
method3
between two controllers, you should put it in a concern. See this tutorial to know how to create concern and share codes/methods among controllers.Here are some codes to help you get going:
Define you controller concern:
Then, include the concern in your controllers:
Now, you should be able to use
method3
in both controllers.