2013-06-28 4 views
0

Я пытаюсь использовать javascript/ajax для изменения порядка таблицы. У меня есть JavaScript работаетRails AJAX и обновление страницы

JavaScript

var ajax_header = function(e) { 
     alert('order_by') 
     var header = $(this).attr('id') 
     $.post('/users', {sort_by: header, order_by: order_by}); 
     if (order_by === "ASC") 
      order_by = "DESC" 
     else 
      order_by = "ASC" 
    } 
    $('.ajax-header').dblclick(ajax_header) 

это принимает Javascript глобальные изменения порядка от ASC к DESC и обратно и попадает в штангу действия индекса пользователей контроллеров. Это приводит к переупорядочению @users. проблема у меня есть, я не знаю, как сделать перерисовку таблицы. Я могу сделать это, используя только рельсы, но я хочу лучше изучить AJAX с рельсами, и я считаю, что документы не очень хорошо написаны.

пользователи контроллер

def index 
if !params[:sort_by].nil? && !params[:order_by].nil? 
    @users = User.order("#{params[:sort_by]} #{params[:order_by]}").paginate(page: params[:page]) 
    respond_to do |format| 
    format.js {} 
    end 
else 
    @users = User.paginate(page: params[:page]) 
end 

конец

мнение, что рисуется

<% provide(:title, 'All users') %> 
<% if signed_in? && !current_user?(@user) %> 
    <h1>All users</h1> 

    <%= will_paginate %> 
    <table id="user_table" border="1"> 
     <tr> 
      <th>Avitar 
      <th id="name"class="ajax-header">Name 
      <th id="email" class="ajax-header">Email 
      <th id="accepted" class="ajax-header">Accepted 
      <th id="admin" class="ajax-header">Admin 
      <th>Delete 
     </tr> 
      <ul class="users"> 
       <%= render @users%> 
      </ul> 
    </table> 
    <%= will_paginate %> 
<% else %> 
    Only an admin can view this page. 
<% end %> 

это мнение выше, это то, что обращается. <% = render @ users%> вызывает частичное и вытягивает остальную часть таблицы.

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

+0

Если вы хотите получить хороший ответ, не могли бы вы помочь нам, уточнив, что именно вы хотите? – Alex

+0

Я пробовал. После нажатия на заголовок вызывается javascript, который попадает в пользовательский контроллер, заставляя пользователей теперь находиться в другом порядке. Я не знаю, как теперь показывать новых пользователей. В ruby ​​html это render @users, который рисует таблицу. – Brandon

ответ

0

Хорошо, я узнал, что использование javascript не было лучшим ответом. Вместо этого я заменил заголовки столбцов link_tos и проверил, был ли параметр [: order_by] равным нулю, если он установлен в DESC, если DESC установлен в ASC и если ASC установлен в DESC.