Should I Use Anchor, Button Or Form Submit For "Follow" Feature In Rails

Posted by James on Stack Overflow See other posts from Stack Overflow or by James
Published on 2010-05-07T03:18:45Z Indexed on 2010/05/07 3:48 UTC
Read the original article Hit count: 234

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!

© Stack Overflow or respective owner

Related posts about ruby

Related posts about ruby-on-rails