Допустим, у меня есть приложение Rails 3, которое отображает видео.Пользователь может «Нравится» или «Не нравится» видео.Кроме того, им могут нравиться / не нравиться другие вещи, такие как игры.Мне нужна некоторая помощь в общем дизайне и в том, как обрабатывать маршруты RESTful.
В настоящее время у меня есть Like Class
, который использует полиморфный дизайн, чтобы объекты были «симпатичными» (likeable_id, likeable_type)
Я хочу сделать это через AJAX (jQuery 1.5).Поэтому я думал что-то вроде:
javascript
// these are toggle buttons
$("likeVideo").click( function() {
$.ajax({
url: "/likes/video/" + video_id,
method: "POST",
....
});
} );
$("likeGame").click( function() {
$.ajax({
url: "/likes/game/" + game_id,
method: "POST",
....
});
} );
контроллер рельсов
Class Likes < ApplicationController
def video
# so that if you liked it before, you now DON'T LIKE it so change to -1
# or if you DIDN'T like it before, you now LIKE IT so change to 1
# do a "find_or_create_by..." and return JSON
# the JSON returned will notify JS if you now like or dislike so that the
# button can be changed to match
end
def game
# same logic as above
end
end
Маршруты
match "/likes/video/:id" => "likes#video", :as => :likes_video
match "/likes/game/:id" => "likes#game", :as => :likes_game
Эта логика кажется правильной?Я делаю POST через AJAX.Технически, я не должен делать PUT?Или я слишком требователен к этому?
Кроме того, мой контроллер использует нестандартные глаголы.Как video
и game
.Должен ли я беспокоиться об этом?Иногда я путаюсь в том, как сопоставить «правильные» глаголы.
Альтернативой может быть публикация чего-то вроде /likes/:id
со структурой данных, содержащей тип (игра или видео).Тогда я мог бы обернуть это одним глаголом в контроллере ... может быть, даже обновить (PUT).
Любые предложения будут оценены.