I am doing a partial render in the view from one controller. Here is the code -> <%= render :template => ‘restaurants/new’ %>. I want the other controller new action code to do it. Is there a way to call an action in another controller ? I don’t want to duplicate the same code in two controllers.
In a nutshell, no. If you need to do this you might want to look at:
- putting the shared code into a module
- putting it into a common ancestor of the 2 classes
- moving the functionality into a helper that both controllers can
- look at cells gem, which is one way of having reusable units of view
Thanks . I am experiment by putting common code in a helper . How Do i access it from my controller. I tried to do ApplicationHelper::base64_url_decode in the ApplicationController bu I am getting method not defined. Any ideas?
def base64_url_decode str
encoded_str = str.gsub(’-’,’+’).gsub(’_’,’/’)
encoded_str += ‘=’ while !(encoded_str.size % 4).zero?
def decode_data str
encoded_sig, payload = str.split(’.’)
data = ActiveSupport::JSON.decode base64_url_decode(payload)
Put it in application_controller.rb