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 ->
http://www.pragprog.com/titles/rails3/agile-web-development-with-rails-third-edition

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