When to use #show action in RESTful application

I am curious what folks do with the #show action (and its associated view) in a RESTful application.

How often is it used?

It seems to me that, for the sorts of applications I can envision, it probably wouldn’t be used much at all. Everything I might want to show can be displayed by the #index action. Is that true more or less often than not?

If there isn’t anything to be gained by a #show action, what do folks do (if anything) to disable it?

I have seen a use for #show in the classic case of a blog, where the index page shows the titles of each of the entries in the blog, but the user must click on one of those titles to “show” the actual blog post, but that brings up a related (and nearly identical) question…

I can see the same issue with the #new action for a nested route. Again in the classic blog application, the #show action for the post would probably include a form for adding a comment, thus eliminating the need for a #new action (and its view) .

What do you folks with vastly more RoR experience than I do in these situations? Is there a best practice? Is there a common practice?

–wpd

I guess it's all in the design... and the intent of the application... my users tend to stay in the show or edit views for the majority of their time...

My show view has all the detailed information for the individual models that just get a name, a description and a few choice tidbits in the index view.

From 'show', the right nav "context" menu lets the users traverse the model relationships with a simple hyperlink click (Functional Requirement X is related to an Marketing Requirements Document, a Marketing Requirement, one or more Projects, one or more Applications, one or more Test Cases, one or more Scenarios, etc, etc, etc. Following relationships goes from show to show, and from a show, you can create or remove relationships to existing models, or create new models to be related from the context of the current model, generate PDFs, perform a traceability analysis, etc.

There is a top nav which lets you get to any index view if you want to navigate to a model "outside" the current context (i.e., not related to the model you're currently looking at).

Right after I clicked “Send”, I thought to myself, Hmmm… I wonder if map.resources has a :only or :exclude options. Sure enough, it does. That answers my original question of “what should I do with the #show or #edit” actions if I don’t see a need for them in my application?" – I can exclude the routes from being generated for them.

Andrew, I would love to see your application in action – is it open source, or, at least running on the web somewhere?

–wpd

It's a company intranet app, but if you send me (arc@datatel.com) your email, I'll send some screenshots as examples.

I am curious what folks do with the #show action (and its associated view) in a RESTful application.

How often is it used?

? I've never done (or even imagined) an app that doesn't use it.

It seems to me that, for the sorts of applications I can envision, it probably wouldn't be used much at all. Everything I might want to show can be displayed by the #index action. Is that true more or less often than not?

Typically, the index page lists multiple instances of a thing (model) -- people, groups, bikes, t-shirts -- with links to 'show' you a detail view of a single instance of that model.

That's a classic web design pattern, regardless of platform.

FWIW,

Hey Patrick,

I understand the index action to list the resources and the show action to display a specific resource. This way I normally use both actions...

Cheers, Sazima

For my admin pages, I always use the edit action instead of show. It cuts down on the amount of work and I find it more useful that way.

Hey Ryan, do you have any live rboards up on the web? I'd love to see it in action...

Very cool. Thank you, I will watch for updates!