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.1

Ruby 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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionManish ShrivastavaView Question on Stackoverflow
Solution 1 - Ruby on-RailssailorView Answer on Stackoverflow
Solution 2 - Ruby on-RailsPavlingView Answer on Stackoverflow
Solution 3 - Ruby on-RailsWahaj AliView Answer on Stackoverflow
Solution 4 - Ruby on-RailsprzbaduView Answer on Stackoverflow