Rails: рендеринг партиалов через Ajax с кнопками - PullRequest
4 голосов
/ 02 марта 2012

У меня в настоящее время есть страница, которая отображает список микросообщений, и на странице также есть несколько вкладок, таких как Most Recent Most Discussed Most Viewed.Мне было интересно, как лучше всего отобразить различные типы порядков списков микросообщений, не обновляя всю страницу и не используя ajax.Я не уверен, как это сделать, но я готов узнать, если кто-то мне поможет.Спасибо :).У меня так много пока.

Страница HTML

<div id='ContentHeader'>
<%= render 'microposts/new' %>
<div class='StreamTabContainer'>
<ul class='StreamTabs'>
<li class='StreamTab StreamTabRecent active'>
<%= link_to 'Most Recent', some_path, :remote => true, :class => 'TabText' %>
</li>
<li class='StreamTab StreamTabDiscussed'>
<%= link_to 'Most Discussed', some_path, :remote => true, :class => 'TabText' %>
</li>
<li class='StreamTab StreamTabViews '>
<%= link_to 'Most Views', some_path, :remote => true, :class => 'TabText' %>
</li>
<li class='StreamTab StreamTabRated'>
<%= link_to 'Highest Rated', some_path, :remote => true, :class => 'TabText' %>
</li>
</ul>
</div>
</div>


<div id='ContentBody'>
<div id='ajax'></div>
<%= render 'users/microposts', :microposts => @microposts %>
</div>

1 Ответ

5 голосов
/ 02 марта 2012

Похоже, вы на правильном пути. Ваш взгляд кажется правильным с первого взгляда.

Есть только несколько заключительных частей для выполнения этой работы, начиная с проверки того, что ваш контроллер может принимать вызовы js:

 # Inside Controller's action
 respond_to do |format|
     format.js
 end

После того, как вы это настроите, вам нужно создать javascript для возврата клиенту для каждого вызова. Создайте файлы в папке просмотра

 # app/views/controllerName/actionName.js.erb
 $('#ajax').html("<%= escape_javascript(render(:partial => 'content', :sortingType => 'type')) %>");

Вышеприведенное позволит вам визуализировать партиал, который показывает посты (в этом примере я назвал его контентом), и передать в парциальную переменную sortingType. Этот ответ будет помещен в html div id = "ajax" (из вашего примера). Последний шаг - создание частичного представления, в котором все ваши сообщения будут отсортированы так, как вы хотите

# app/views/resourceName/_content.html.erb
# Simply create your view partial here, which uses the :sortingType to display your posts in the order you need

Надеюсь, это приблизит вас к вашим намерениям.

Редактировать: Понял, у меня были некоторые проблемы с моими цитатами.

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