On Wednesday, March 12, 2014 11:05:44 AM UTC-4, Walter Lee Davis wrote:
>
>
> On Mar 12, 2014, at 10:25 AM, Colin Law wrote: 
>
> > On 12 March 2014 02:04, Walter Lee Davis <wa...@wdstudio.com<javascript:>> 
> wrote: 
> >> 
> >> On Mar 11, 2014, at 4:59 PM, Colin Law wrote: 
> >> 
> >>> On 11 March 2014 10:27, Arun kant sharma <iaru...@gmail.com<javascript:>> 
> wrote: 
> >>>> My question is that why link_to method does not default to DELETE 
> method 
> >>>> when passed link is destroy_user_session_path as we know from routes 
> what it 
> >>>> should use. I don't have problem passing method: :delete but it feels 
> >>>> redundant. 
> >>> 
> >>> You are missing what the purpose of routes.rb is.  It is to tell the 
> >>> system what to do when a request is received (how to route it in 
> >>> fact).  It is nothing to do with generating the code in the views. 
> >> 
> >> True, the routes file doesn't generate the views directly, but doesn't 
> the routes file generate or seed the url helpers? When I type in 
> >> 
> >> <%= widgets_path %> 
> >> 
> >> in a view, that's coming (somewhat) directly from the line 
> >> 
> >>  resources :widgets 
> >> 
> >> in the routes.rb, right? 
> > 
> > I don't believe so, no, though someone may correct me.  Easy to find 
> > out.  Have a look at the html generated by widgets_path in the view, 
> > delete resources :widgets in routes.rb, restart the server and view 
> > the page again.  Compare the html, which I believe will show no 
> > difference.  If you click the link you should get a route not found 
> > error. 
>
> Wow, tested this just now by removing the index method from routes with 
> except: :index, and sure enough, the helper still works. This directly 
> contradicts what I heard from Obie Fernandez a number of years ago at the 
> Philly ETE conference. Probably used to be true, and didn't survive the 
> many changes to Rails over the years. I tried removing the index method 
> from my widgets_controller too, just to see if that was the source, and I 
> can't make this helper give up. Very odd. 
>
> Walter 
>
> > 
> > Colin 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "Ruby on Rails: Talk" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to rubyonrails-ta...@googlegroups.com <javascript:>. 
> > To post to this group, send email to 
> > rubyonra...@googlegroups.com<javascript:>. 
>
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLtmD8eHiD%2BP%2BXo%2B%3DHhHC1No2sdowk2xXG6BkOyMRfL6aw%40mail.gmail.com.
>  
>
> > For more options, visit https://groups.google.com/d/optout. 
>
>
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).


-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/28db6294-2393-4079-9198-993420bd4777%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to