Должен ли я использовать привязку, кнопку или форму отправки для функции Follow в Rails

Я разрабатываю приложение в Rails 3, используя базу данных nosql. Я пытаюсь добавить функцию «Follow», похожую на twitter или github.

Что касается разметки, я определил, что есть три способа сделать это.

1) Используйте обычный анкер. (Github использует этот метод)

<a href="/users/follow?target=Joe">Follow</a>

2) Используйте кнопку. (Твиттер использует этот метод)

<button href="/friendships/create/">Follow</button>

3) Используйте форму с кнопкой отправки. (Имеет некоторые преимущества для меня, но я еще не видел, чтобы кто-то это делал.)

<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> 

Поскольку я хочу сохранить user_id в базе данных, а не имя пользователя, варианты 1 и 2 заставят меня выполнить запрос к базе данных, чтобы получить фактический user_id, тогда как вариант 3 позволит мне сохранить user_id в скрытом поле формы, чтобы Мне не нужно делать какие-либо поиски в базе данных. Я могу просто получить идентификатор из хэша параметров при отправке формы.

Я успешно заработал каждый из этих методов, но я хотел бы знать, как лучше всего это сделать. Какой способ более семантический, безопасный, лучше для пауков и т. д.? Есть ли причина, по которой твиттер и гитхаб не используют для этого формы?

Любое руководство будет оценено. Я склоняюсь к использованию метода формы, поскольку с тех пор мне не нужно запрашивать базу данных, чтобы получить идентификатор пользователя, но я беспокоюсь, что должна быть причина, по которой большие парни просто используют якоря или кнопки для этого.

Я новичок, так что полегче со мной, если я что-то упустил. Спасибо!


person James    schedule 07.05.2010    source источник
comment
Как это вопрос безопасности? От какой атаки вы пытаетесь защититься?   -  person rook    schedule 07.05.2010


Ответы (1)


Это действительно просто основано на личных предпочтениях. Простой тег привязки красив и удобен, показывает четкие намерения, красив и лаконичен. Вы можете просто создать почтовый запрос AJAX с помощью Javascript, чтобы все произошло быстро. Работа с базой данных не должна быть проблемой. Даже если в конечном итоге он будет слишком медленным (хотя я в этом сомневаюсь), я бы сказал, что вы, вероятно, делаете преждевременную оптимизацию.

person bensie    schedule 07.05.2010