Это хорошо работает для меня:
def renderActionInOtherController(controller,action,params)
controller.class_eval{
def params=(params); @params = params end
def params; @params end
}
c = controller.new
c.request = @_request
c.response = @_response
c.params = params
c.send(action)
c.response.body
end
затем вызовите
render :text => renderActionInOtherController(OtherController,:otherAction,params)
, в основном он взламывает другой класс и переписывает свой метод "params" и возвращает
Если вы используете Rails 4:
def renderActionInOtherController(controller,action,params)
c = controller.new
c.params = params
c.dispatch(action, request)
c.response.body
end