Created
October 28, 2011 18:18
-
-
Save bsodmike/1322962 to your computer and use it in GitHub Desktop.
Render 404 via catch-all route in Rails 3.1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CmsPageNotFound < StandardError; end | |
class PublicController < ApplicationController | |
rescue_from CmsPageNotFound do | |
render 'not_found', :status => :not_found and return false | |
end | |
def index | |
end | |
def show | |
@content_item = parse_path(params[:path]) | |
raise CmsPageNotFound unless @content_item | |
end | |
private | |
def parse_path(path_parts) | |
# item = nil | |
# path = path_parts.split("/") | |
# if path.size == 1 | |
# %w().include?path[0] ? item = true : item = false | |
# elsif path.size >= 2 | |
# end | |
# item | |
nil | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
match "*path" => 'public#show' |
I've got a couple 3.1 projects implementing the above, and they are working fine so far. I believe the 'catch-all' was removed from the generated app template, but you can still certainly use it. Make sure it's the last route in your routes file though.
Just added this to a new 3.1.3 app and it works great =)
Nice :)
Thanks!
@smostovoy: If this was SO, I'd definitely give you an upvote. Thanks for the nice simple solution!
And FYI, I'm running Rails 3.2.13 with Ruby 1.9.3-p392.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
are you sure it works with rails 3.1? looks like such route doesn't work in latest version