Forum: Ruby on Rails Restful Routing and restful versus non-restful routes

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
236dd7ca555806d7c971f1af1523a3d5?d=identicon&s=25 Srdjan Cengic (Guest)
on 2013-11-18 10:30
(Received via mailing list)
So resources :products will create 7 different restful routes for CRUD
operations for resource products.
For example: products GET /products(.:format) products#index

So restful route includes only controller name within itself and :id for
operation like edit, show, update, delete.
When i create *non-restful* routes in rails for example: get
':controller/:action/:id' i only can see difference that i
*must*explicitly write
:action, so that ":action" makes this route non-restful?

*So as i get this, first requirement for route(URL) to be restful is
that
route can't contain action name?* *Question 1*

Second requirement for route to be restful is that action corresponding
to
route must "play by restful rules" in another word,
for example a GET should not leave side-effects on the server, but just
retrieve data.
So if i have /products(.:format) products#index and within index action
i
saved something into DB, *than above route is just looks like restful
route
but in fact it isn't*? *Question 2*

I know that i can pass to restful route additional parameters, for
example:
link_to "Show", products_path(id: 5, a: "aaaa", b: "bbbb") so now URL
is:
products/5?a=aaaa&b=bbbb.
So am i violating restful here, or this route is still restful?
*Question 3*

To me seems that i don't need *non*-restful routes at all, when i can
make
a bunch of restful routes with construct like following?(and other
similar
construct)
*Question 4*

resources :products do
  member do
    get 'preview'
  endend

Please don't redirect me to http://guides.rubyonrails.org/routing.html i
read it multiple times :)
5f94b9b346c2aa648a80bc259978e5bc?d=identicon&s=25 Colin Law (Guest)
on 2013-11-18 10:54
(Received via mailing list)
On 18 November 2013 09:29, Srdjan Cengic <cengasrle@gmail.com> wrote:
> [snip]
>  Question 1
>
> Second requirement for route to be restful is that action corresponding to
> route must "play by restful rules" in another word,
> for example a GET should not leave side-effects on the server, but just
> retrieve data.
> So if i have /products(.:format) products#index and within index action i
> saved something into DB, than above route is just looks like restful route
> but in fact it isn't?

Whether it is restful or not is not relevant as you should not do
this.  Imagine, for example, the havoc caused when google interrogates
all the GET routes in your application.

> Question 2
>
> I know that i can pass to restful route additional parameters, for example:
> link_to "Show", products_path(id: 5, a: "aaaa", b: "bbbb") so now URL is:
> products/5?a=aaaa&b=bbbb.
> So am i violating restful here, or this route is still restful?

It is still restful.

>   end
> end

So what is the question you are asking?  If the restful routes fit
your needs then use them, if they don't then use other routes.

Colin
This topic is locked and can not be replied to.