23

I'm trying to call a custom instance of a 403 HTTP error in Rails but I can't seem to figure out how to do this...

I have several user authentication roles and basically if a role tries to browse to an area that it is not authorised to visit I want to display a 403 instead of just redirecting the user.

How do I do this?

1
  • I think the accepted answer should be changed -- this one is a better solution, since it's the correct error code as well as a better presentation to the end user: stackoverflow.com/questions/9130191/… Commented Apr 15, 2013 at 13:19

2 Answers 2

44

In your controller code add the following line:

render :status => :forbidden, :text => "Forbidden fruit"

Refer to this page for http code to symbol mapping.

Sign up to request clarification or add additional context in comments.

4 Comments

Fantastic! Thanks heaps... FYI you're missing a comma after :forbidden
Thanks I have updated the answer and added a reference to http code to ruby symbol list.
The old url to the code mapping is gone. I updated it to point to apidock instead. apidock.com/rails/ActionController/Base/…
The :text will need to become :plain in newer versions of Rails.
5

Just for posterity: I think return 403.html is a nicer solution, because it generates a standard page, just like the 404. The above solution only displays the text given. And because someone in good practice can only go to a forbidden page by typing or clicking a link outside the web app, a standard error page is the way to go.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.