When to use `link_to` and `button_to` in Rails

when-to-use-`link-to`-and-`button-to`-in-rails

This article was originally published on Rails Designer

This article about forms inside forms triggered a question from a reader: when to use link_to and button_to in Rails? So I wanted to publish this short and quick article.

Rails has had both helpers from the very early beginnings. link_to likely from the first release, and button_to not much later.

With the release of Rails’ ujs, link_to could now accept data-attributes as seen in these older docs. This made many Rails developers belief this the right way to do it, but: you should use link_to for simple navigation and GET requests, and button_to for actions that submit data or require additional security, such as POST, PUT, or DELETE requests.

I’ve seen some nasty HTML-element abuse in pure JavaScript apps too. Something like this:

<div onClick="doClick()">Click me</div>

(that’s like using a spoon to cut your steak—technically possible, but awkwardly ineffective and a nightmare for accessibility!)

button_to should also, for better accessibility and semantic correctness, be used to open modal or slide-overs. I could present a counterpoint if the modal or slide-over could also be opened as a separate page.

Also when you replace a element with say, an inline-form, a button_to is the correct choice.

It’s as simple as that really. Is it GET request and does it change the URL? Go for a link_to. Otherwise choose button_to.

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post
i’m-under-ddos-attack

I’m Under DDoS Attack

Next Post
text-i/o-vs.-binary-i/o

Text I/O vs. Binary I/O

Related Posts