Should I Use Anchor, Button Or Form Submit For "Follow" Feature In Rails
- by James
I am developing an application in Rails 3 using a nosql database. I am trying to add a "Follow" feature similar to twitter or github.
In terms of markup, I have determined that there are three ways to do this.
1) Use a regular anchor. (Github Uses This Method)
<a href="/users/follow?target=Joe">Follow</a>
2) Use a button. (Twitter Uses This Method)
<button href="/friendships/create/">Follow</button>
3) Use a form with a submit button. (Has some advantages for me, but I haven't see anyone do it yet.)
<form method="post" id="connection_new" class="connection_new" action="/users/follow">
<input type="hidden" value="60d7b563355243796dd8496e17d36329" name="target" id="target">
<input type="submit" value="Follow" name="commit" id="connection_submit">
</form>
Since I want to store the user_id in the database and not the username, options 1 and 2 will force me to do a database query to get the actual user_id, whereas option 3 will allow me to store the user_id in a hidden form field so that I don't have to do any database lookups. I can just get the id from the params hash on form submission.
I have successfully got each of these methods working, but I would like to know what is the best way to do this. Which way is more semantic, secure, better for spiders, etc...? Is there a reason both twitter and github don't use forms to do this?
Any guidance would be appreciated. I am leaning towards using the form method since then I don't have to query the db to get the id of the user, but I am worried that there must be a reason the big guys are just using anchors or buttons for this.
I am a newb so go easy on me if I am totally missing something. Thanks!