Can we call a Controller's method from a view (as we call from helper ideally)?
Ruby on-RailsRubyRuby on-Rails-3Ruby on-Rails-3.1Ruby on-Rails Problem Overview
In Rails MVC, can you call a controller's method from a view (as a method could be called call from a helper)? If yes, how?
Ruby on-Rails Solutions
Solution 1 - Ruby on-Rails
Here is the answer:
class MyController < ApplicationController
def my_method
# Lots of stuff
end
helper_method :my_method
end
Then, in your view, you can reference it in ERB exactly how you expect with <%
or <%=
:
<% my_method %>
Solution 2 - Ruby on-Rails
You possibly want to declare your method as a "helper_method", or alternatively move it to a helper.
https://stackoverflow.com/questions/3992659/in-rails-what-exactly-do-helper-and-helper-method-do
Solution 3 - Ruby on-Rails
Haven't ever tried this, but calling public methods is similar to:
@controller.public_method
and private methods:
@controller.send("private_method", args)
See more details here
Solution 4 - Ruby on-Rails
make your action helper method using helper_method :your_action_name
class ApplicationController < ActionController::Base
def foo
# your foo logic
end
helper_method :foo
def bar
# your bar logic
end
helper_method :bar
end
Or you can also make all actions as your helper method using: helper :all
class ApplicationController < ActionController::Base
helper :all
def foo
# your foo logic
end
def bar
# your bar logic
end
end
In both cases, you can access foo and bar from all controllers.