# Checking request.post? before action

**URL:** <https://www.ruby-forum.com/t/checking-request-post-before-action/133390>\
**Category:** Rails\
**Created:** [March 31, 2008, 6:42am UTC](https://www.ruby-forum.com/t/checking-request-post-before-action/133390 "2008-03-31T06:42:59Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![teck](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b2d939/32.png) [@teck](https://www.ruby-forum.com/u/teck)\
**Post date:** [March 31, 2008, 6:42am UTC](https://www.ruby-forum.com/t/checking-request-post-before-action/133390/1 "2008-03-31T06:42:59Z")

</div>

I have the following code:

def create  
redirect\_to :action =\> “index” unless request.post?  
@entry = Entry.new(params[:entry])  
if @entry.save  
flash[:notice] = “Successfully created…”  
redirect\_to :action =\> “index”  
else  
render :action =\> “new”  
end  
end

I get an error “Can only render or redirect once per action”.  
I understand “redirect\_to” or “render” doesn’t end the script.

I would like to allow only “post” request for “create” action,  
so I need to do somehting about this.

But how can I improve the script?

Is there any way to write  
redirect\_to :action =\> “index” unless request.post?  
in model?

Tek

---

<div class="post-metadata">

**Author:** ![teck](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b2d939/32.png) [@teck](https://www.ruby-forum.com/u/teck)\
**Post date:** [March 31, 2008, 7:17am UTC](https://www.ruby-forum.com/t/checking-request-post-before-action/133390/2 "2008-03-31T07:17:04Z")

</div>

Tek,

You need to return or the processing keeps happening through the  
method. I.e.:

redirect\_to :action =\> “index” and return unless request.post?

🙂

-Danimal
