Removing routes to new, show, etc. in a model

Example model: demo

--app ----Controllers ------application_controler.rb ------demos_controller.rb ----Models ------demo.rb ----Views ------demos --------index.html.erb (I want to keep this) --------edit.html.erb (delete) --------new.html.erb (delete) --------show.html.erb (delete)

http://localhost:3000/demos/new (should not be a route) http://localhost:3000/demos/edit (should not be a route) http://localhost:3000/demos/show (should not be a route)

I tried to create a new route:

map.connect "*anything", :controller => 'rushing_offenses', :action => 'request_error'

.. and built an request_error.html.erb file so that if anyone tried to go elsewhere while within that controller it would toss them to the request_error.html.erb file (but that's not working)

I was trying to find more about RESTful routes but I'm just not finding what I'm looking for.

Any help would be appreciated..

Thanks.

Yes, this is very bad, if there's no "edit", "update" or "destroy" in your controller Rails will just send a 404 back to the browser, it won't do anything like letting your user do something you haven't programmed yourself.

Routing is just **routing**, it's all about sending a message, it doesn't guarantee that there's someone on the other side to receive it.

Maurício Linhares wrote:

Yes, this is very bad, if there's no "edit", "update" or "destroy" in your controller Rails will just send a 404 back to the browser, it won't do anything like letting your user do something you haven't programmed yourself.

So, how do you block these specific actions?

Do I have to force those specific actions to the index?

For instance, anyone that types http://mydomain.com/rushing_offenses/new

.. can access the new template ..

I shouldn't have to edit the new.html.erb file to empty it out to fix this..

I just don't understand how this type of routing is supposed to be handled for cases where I simply don't want "anyone" accessing those items..

Read about before_filters and how you can deny access to actions for unauthorized users. You should definitely get a Rails book and read it instead of just trying to force you way with the framework and the language. Will avoid most of the common questions you're having. The best one around now is this ->

Also, if a user clicks on a link beyond the controller parameter:

http://mydomain.com/rushing_offenses/goo (for instance) the following error is returned on my screen:

ActiveRecord::RecordNotFound in Rushing offensesController#show

I don't want errors like this to show for anyone. Is this just a development error response and not one that shows up in production?

That's not the error the user will see in production. For this specific error the page under public/500.html will be shown, this is a development message only.

Maurício Linhares wrote: > Yes, this is very bad, if there's no "edit", "update" or "destroy" in > your controller Rails will just send a 404 back to the browser, it > won't do anything like letting your user do something you haven't > programmed yourself.

So, how do you block these specific actions?

map.resources takes :only/:except options if you don't want certain things to be routed. You also delete the new template and action.

Also, if a user clicks on a link beyond the controller parameter:

http://mydomain.com/rushing_offenses/goo(for instance) the following error is returned on my screen:

ActiveRecord::RecordNotFound in Rushing offensesController#show

I don't want errors like this to show for anyone. Is this just a development error response and not one that shows up in production?

in production typically users just see a generic 'something went wrong' page. if you want something different you can rescue the exception and show something appropriate.

Fred

map resources :only worked fine.

I'll still look into the other suggestions and catch up on some reading. Again, I appreciate the help.

I love reading but at the same time I love doing. I'll start two chapters and then my mind drifts and says ooh that's a good idea.. and I try new things..

Thanks for helping me out with some of my newbish questions.

If you really don't want any access to new/delete etc then you can just remove these actions from the controller and delete the view erb files for those actions.

Colin