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 share - look at cells gem, which is one way of having reusable units of view + code
Fred
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?
module ApplicationHelper
def base64_url_decode str encoded_str = str.gsub(‘-’,‘+’).gsub(‘_’,‘/’) encoded_str += ‘=’ while !(encoded_str.size % 4).zero? Base64.decode64(encoded_str) end
def decode_data str encoded_sig, payload = str.split(‘.’) data = ActiveSupport::JSON.decode base64_url_decode(payload) end end
Put it in application_controller.rb