# Function could determine the caller action?

**URL:** <https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179>\
**Category:** Rails\
**Created:** [March 8, 2006, 1:14am UTC](https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179 "2006-03-08T01:14:53Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![oo00oo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8797f3/32.png) [@oo00oo](https://www.ruby-forum.com/u/oo00oo)\
**Post date:** [March 8, 2006, 1:14am UTC](https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179/1 "2006-03-08T01:14:53Z")

</div>

Is it possible to determine which action call the function ?

In example, func\_test in ApplicationController could determine which  
action from SiteController is calling her ?

in class ApplicationController I have

def func\_test  
if ( calling from index )  
return “1” end

if ( calling from contact )  
return “2” end  
end

and in class SiteController

def index  
@var = func\_test  
end

def contact  
@var = func\_test  
end

Thanks

---

<div class="post-metadata">

**Author:** ![oo00oo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8797f3/32.png) [@oo00oo](https://www.ruby-forum.com/u/oo00oo)\
**Post date:** [March 8, 2006, 1:14am UTC](https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179/2 "2006-03-08T01:14:54Z")

</div>

if action\_name == ‘index’

–  
Kent

---

<div class="post-metadata">

**Author:** ![oo00oo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8797f3/32.png) [@oo00oo](https://www.ruby-forum.com/u/oo00oo)\
**Post date:** [March 8, 2006, 1:41am UTC](https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179/3 "2006-03-08T01:41:32Z")

</div>

I can’t check this at the moment, but I think Ruby supports this:

def test  
caller  
end

test # should give the object that called test

[http://www.ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/function.html#caller](http://www.ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/function.html#caller)

Although, for your case, action\_name is probably more suitable 🙂

-Jonny.

---

<div class="post-metadata">

**Author:** ![oo00oo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8797f3/32.png) [@oo00oo](https://www.ruby-forum.com/u/oo00oo)\
**Post date:** [March 8, 2006, 1:42am UTC](https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179/4 "2006-03-08T01:42:01Z")

</div>

No. action\_name is not Ruby or ROR functionnality

---

<div class="post-metadata">

**Author:** ![oo00oo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8797f3/32.png) [@oo00oo](https://www.ruby-forum.com/u/oo00oo)\
**Post date:** [March 8, 2006, 2:18am UTC](https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179/5 "2006-03-08T02:18:14Z")

</div>

Have you tried it?

Kent

---

<div class="post-metadata">

**Author:** ![oo00oo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8797f3/32.png) [@oo00oo](https://www.ruby-forum.com/u/oo00oo)\
**Post date:** [March 8, 2006, 10:49am UTC](https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179/6 "2006-03-08T10:49:50Z")

</div>

Yes just test it, return an error. I need to pass an arguement ?

---

<div class="post-metadata">

**Author:** ![oo00oo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8797f3/32.png) [@oo00oo](https://www.ruby-forum.com/u/oo00oo)\
**Post date:** [March 8, 2006, 2:29pm UTC](https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179/7 "2006-03-08T14:29:40Z")

</div>

action\_name is an attribute of class AtionController::Base. It does  
not require an argument. Can you post the exception stack trace?

–  
Kent

---

<div class="post-metadata">

**Author:** ![oo00oo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/8797f3/32.png) [@oo00oo](https://www.ruby-forum.com/u/oo00oo)\
**Post date:** [March 8, 2006, 12:58pm UTC](https://www.ruby-forum.com/t/function-could-determine-the-caller-action/78179/8 "2006-03-08T12:58:50Z")

</div>

class TestController  
def test  
render :text =\> action\_name  
end  
end

Works fine for me.

-Jonny.
