2011-02-08 3 views
1

У меня есть приложение rails, которое использует библиотеку twitter, чтобы вытащить твиты и отображать их один за другим в моем представлении с помощью jquery. Я немного не уверен, что лучший способ переноса твитов с контроллера на представление. Две идеи у меня есть следующие:Rails частичная лучшая практика

  1. Вернись твиттера в JSON контроллера/модели, передать его мнению, используя JQuery, а затем построения HTML с DOM методов строительства.

  2. Верните твиттер json в контроллер/модель, отрисуйте частичный, который отобразит список твитов с html и передаст часть html с jquery.

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

Любая помощь будет замечательной!

ответ

2

partials сделает результат индексируемым, если вы хотите напрямую построить html на странице.

Идея javascript + json должна быть проще реализовать, но не намного.

+0

Почему парциальное более индексируемой? – Danny

+0

Я думаю, что он просто говорит, что если он является частичным, вы можете отображать его на странице, когда страница загружается без использования JavaScript. В любое время, когда вы должны использовать JavaScript для отображения содержимого после загрузки страницы, этот контент не может быть проиндексирован поисковыми системами (хотя они все время становятся все умнее). – dontangg

3

Вам не нужно передавать данные на просмотр, а затем визуализировать JSON. Вы можете просто сделать это в вашем контроллере:

render :json => tweets 

Я думаю, что это идеальный вариант использования для официального jQuery Templates plugin. Основная функция, tmpl, имеет множество отличных примеров того, как ее использовать.

Я попытаюсь быстро обобщить пример из их документации. В принципе, вы поместите шаблон HTML внутри script тегов, как это:

<script id="movieTemplate" type="text/x-jquery-tmpl"> 
    <li><b>${Name}</b> (${ReleaseYear})</li> 
</script> 

Затем вы получите данные в объект JSON и передать его в tmpl функцию:

// movies contains your JSON data 
$("#movieTemplate").tmpl(movies).appendTo("#movieList"); 

Этот пример предполагает что у вас есть элемент ul с id movieList и он добавляет элемент li в список для каждого фильма, найденного в переменной movies.

Переменная кино будет выглядеть примерно так:

var movies = [ 
    { Name: "The Red Violin", ReleaseYear: "1998" }, 
    { Name: "Eyes Wide Shut", ReleaseYear: "1999" }, 
    { Name: "The Inheritance", ReleaseYear: "1976" } 
]; 
Смежные вопросы