I think there might be a bug here. Otherwise, I'm stumped. Dynamic URI's are created using the routes.rb file and made available for any ruby code (views, controllers, etc.). I did a little testing as recommended above. I created a base application using a REST class Products. I then created a page with a link to products_path (as a GET) which should invoke the index method. The link looks as follows:
<%= link_to "testing product link", products_path %>
In the first test case, I had the following in my routes file:
resources :products
root 'pages#home'
Note, the root entry is just to define a default. The home page is where I had my link. This works as you would expect.
Next, I changed this to:
resources :products, except: [:index]
root 'pages#home'
In this case, when I run rake routes, the route for products_path, method:GET is gone. Also, if I type 'localhost:3000/products', I get a routing error. However, the home page still comes up and the link still translates to the following:
<a href='/products'>
This is unexpected.
Next, I eliminated the resources route and defined the following route:
get '/getproducts' => 'pages#about', as: :products
pages#about is just a static page i built for this example. I did this because the only way the link_to function could get this right would be to read the routes file. It did. The link produced was:
<a href='/getproducts'>
Finally, I deleted all routes except the root 'pages#home'. Now, the home page gives me an error on the link_to function because of an invalid route.
Therefore, the link_to function does use dynamic paths that are generated from the routes file, although this is not a specific part of view rendering, it's available anywhere you have ruby code, such as controllers. However, in the one case where REST routes are defined, it's ignoring the except parameter (or, at least, that's what it appears to be doing).