Должен ли я использовать привязку, кнопку или форму отправки для функции «следовать» в Rails - PullRequest
1 голос
/ 07 мая 2010

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

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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 07 мая 2010

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

...