Модель Rails 3 - Как создать рейтинг ajax? - PullRequest
2 голосов
/ 17 февраля 2011

Как мне создать простой рейтинг ajax, как на этой странице http://watir.com/documentation/?Каждый посетитель должен иметь возможность оценить, мне не нужно устанавливать разрешения.Я хочу хранить рейтинги в столбце.Таким образом, пользователь может сортировать по рейтингу.Пожалуйста, сделайте подробный пример.Я не эксперт по javascript.

Я нашел пример для создания рейтинга с нуля.Но это авторизует пользователя.Может кто-нибудь показать мне руководство по созданию рейтинга без Rater (пользователя)?Следует не только хранить значения, но и подсчитывать голоса.

http://eighty -b.tumblr.com / post / 1569674815 / создание-в-реляционной звездной рейтинговой системе в рельсах-3

Ответы [ 2 ]

4 голосов
/ 16 марта 2011

Недавно я добавил простой механизм оценки в существующий проект:

Я добавил два поля в существующую таблицу (в которой содержались элементы для оценки).Это были:

rating_score => The current score
ratings => The number of ratings which led to the score

Например, если пять пользователей проголосовали бы за «5» за текущий элемент, rating_score было бы 25, а рейтинги - 5. Текущий рейтинг будет рассчитываться какrating_score / ratings.

Затем я добавил к контроллеру оцениваемых предметов новый метод, называемый «скорость», который выглядел примерно так:

def rate
    @item = Item.find(params[:id])
    @container = "item"+@item.id.to_s

    @item.rating_score += params[:rating].to_i
    @item.ratings += 1
    @item.save

    respond_to do |format|
        format.js
    end
end

Мой взгляд на этот метод, называемый rate.js.erb, будет выглядеть примерно так:

$('#<%= @container %>').html('<%= escape_javascript(render(partial: 'rating', locals: { item: @item })) %>');

Этот код работает только в том случае, если у вас установлен jQuery, но его можно легко перевести на Prototype или любой другой фреймворк JS, который вы используете.

И частичное для рейтинга, названного _rating.html.erb, было что-то вроде:

<%= form_tag url_for(controller: 'items',  action: 'rate', id: item.id), remote: true %>
    <%= rating_stars(item.rating_score, item.ratings) %>
    <%= item.ratings %> Votes
</form>

В этом частичном вспомогательном методе rating_stars() была создана некая звезда-подходит для представления рейтинга, но вы можете делать это как хотите.

Установив «remote: true» в помощнике form_tag, ваша установка Rails должна автоматически передавать запрос через установленную инфраструктуру Javascript.Эта магия является частью всего ненавязчивого javascript , происходящего в Rails в последнее время, что на самом деле довольно круто.

Надеюсь, это даст вам представление о том, как реализовать очень простую систему оценки без функции блокировки IP вообще в Rails.

0 голосов
/ 14 марта 2011

Похоже, система оценки документации Watir настроена через polldaddy .

Для этого конкретного случая, кажется, они включают в себя javascript polldaddy, который заполняет контейнер div рейтинга их виджетом звездного рейтинга.Похоже, есть соответствующий объект javascript, который вы можете проверить:

console.log( PDRTJS_101132_page_2.avg_rating ); //=> 4

Если у вас на странице было много виджетов с рейтингом, подобных этим, и вы смогли создать коллекцию объектов javascript в паре с их элементами div,предположительно, вы могли бы отсортировать их по среднему рейтингу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...