link_to with array parameter for URL : What does it mean?

(Crossposting Note: This topic has been posted already at https://railsforum.com/topic/1933-link-to-with-array-parameter-for-url-what-does-it-mean , but did not get a reply so far)

I found in http://guides.rubyon…-a-partial-form the following example:

link_to 'Destroy Comment', [comment.article, comment], method: :delete, data: { confirm: 'Are you sure?' }

I was surprised to see an array as second parameter for link_to and would like to know the meaning of this construct. The website gives just the somewhat thin explanation Clicking this new "Destroy Comment" link will fire off a DELETE /articles/:article_id/comments/:id to our CommentsController, which explains the effect of this statement, but does not really explain the general mechanism behind this concept. I've looked up the API documentation at http://api.rubyonrails.org/, which gives for the second parameter of link_to the following choices (for the case that the first parameter is a string):

A string containing the URL to link to, or A hash containing various options for the URL An array as parameter is not mentioned. It seems that the API documentation is not complete here. Or did I look at the wrong place?

Please could someone explain this syntax to me, and also point out, where I can find a more detailed description of the API?

(Crossposting Note: This topic has been posted already at https://railsforum.com/topic/1933-link-to-with-array-parameter-for-url-what-does-it-mean , but did not get a reply so far)

I found in http://guides.rubyon…-a-partial-form the following example:

link_to 'Destroy Comment', [comment.article, comment], method: :delete, data: { confirm: 'Are you sure?' }

I was surprised to see an array as second parameter for link_to and would like to know the meaning of this construct. The website gives just the somewhat thin explanation Clicking this new "Destroy Comment" link will fire off a DELETE /articles/:article_id/comments/:id to our CommentsController, which explains the effect of this statement, but does not really explain the general mechanism behind this concept. I've looked up the API documentation at http://api.rubyonrails.org/, which gives for the second parameter of link_to the following choices (for the case that the first parameter is a string):

A string containing the URL to link to, or A hash containing various options for the URL An array as parameter is not mentioned. It seems that the API documentation is not complete here. Or did I look at the wrong place?

Please could someone explain this syntax to me, and also point out, where I can find a more detailed description of the API?

What you are seeing is evidence that there is a nested route in play. Have a read of the Routing from the outside in Rails Guide, and note carefully what happens when you do this:

  resources :articles do     resources :comments   end

What do the URL helpers look like to navigate to a single article's comments, or to an individual comment itself? Remember, there is no exposed /comments/123 URL possible once you do that scheme above.

Walter

Thanks for the explanation! I noticed your response only now, and it would have at least partially answered my other question I had posted in this forum too :wink:

I think I get the idea with nested routing now. What I still don't understand is a *syntactic* issue: How to map this feature to the API description. Looking at, for example,

http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to

I can not find a link_to with a signature which would allow for an array as the second parameter. Is this an omission from the API description (which I maybe should report to the maintainers), or did I just look at the wrong place?

Thanks for the explanation! I noticed your response only now, and it would have at least partially answered my other question I had posted in this forum too :wink:

I think I get the idea with nested routing now. What I still don't understand is a *syntactic* issue: How to map this feature to the API description. Looking at, for example,

link_to (ActionView::Helpers::UrlHelper) - APIdock

I can not find a link_to with a signature which would allow for an array as the second parameter. Is this an omission from the API description (which I maybe should report to the maintainers), or did I just look at the wrong place?

Think of the array of elements as the first variable passed to the method. You can have three or more elements in that array, if that's how deep the nesting goes. But the array itself is the first variable, and in that limited way of looking at this, means that the documentation is correct to a point. I agree, it would be good if there was a signature showing this in the API docs. Good thing that Rails is open source -- you can get a commit out of this if you write it up and submit a pull request on GitHub!

Walter

Walter Davis wrote in post #1147032:

Think of the array of elements as the first variable passed to the method. You can have three or more elements in that array, if that's how deep the nesting goes.

Well, this part I understand; it's just the usual parameter passing, and of course you can pass any parameter (and, actually, it is the second parameter, not the first, but this is a minor issue). But ...

But the array itself is the first variable, and in that limited way of looking at this, means that the documentation is correct to a point.

... I don't quite agree. Looking at the description of the possible signatures, the documentation says: