Рендеринг HTML-таблицы с помощью ajax, JQuery и render: частичный - PullRequest
0 голосов
/ 16 января 2010

Вот мой вопрос. Я хочу создать таблицу с определенной строкой заголовка, которая выглядит следующим образом

<table>
<tr class="table-header"> <th></th><th> Name </th><th> Location </th></tr>
..data..

</table>

Проблема возникает, когда я хочу заполнить ajax строк таблицы. Я попробовал пару вариантов. В основном мое приложение знает, куда вставить данные, используя селектор, такой как # table-data. Он будет обновляться нормально, но перезапишет заголовок таблицы, или вставит все это в один столбец, или поместит его над заголовком и т. Д. Я пытался сделать это с помощью div, <p>, <tr> и т. Д., Но, кажется, никогда тренируйся правильно.

Мое действие выглядит так:

def multi_search

     @profiles = Profile.find(:all) do
           first_name =~ "%#{params[:profile][:first_name]}%" if params[:profile][:first_name].present?
           last_name  =~ "%#{params[:profile][:last_name]}%" if params[:profile][:last_name].present?
           city  =~ "%#{params[:profile][:city]}%" if params[:profile][:city].present?
           state  =~ "%#{params[:profile][:state]}%" if params[:profile][:state].present?                
           type      =~  "%#{params[:profile][:type]}%"      
           paginate :page => params[:page], :per_page => params[:rows]      
           order_by "#{params[:sidx]} #{params[:sord]}"
       end

      render :partial=> "search/search_results", :collection => @profiles, :as=>:profile  
   end 

и мой javascript выглядит так:

$("#ajax_search_form").ajaxForm({target: '#provider_search_results'})

и мой частичный выглядит так:

<tr>
 <td class="table_user_image"><%= image_tag profile.avatar.url(:small) %></td>
 <td class="table_user_name">
  <%= link_to_if(profile.user.role=="Provider", profile.full_name, { :controller => "profiles", :action => "show_public_provider",    :id=>profile.id}) do
       link_to(profile.full_name, { :controller => "profiles", :action => "show_public_student", :id => profile.id })
     end %></td>
 <td class="table_user_location"> <%= profile.city %>, <%= profile.state %> </td>

</tr>

В любом случае, я думаю, мне нужно визуализировать некоторый статический текст, прежде чем я попаду в коллекцию, и я не уверен, как это сделать. Любая помощь будет высоко ценится.

ПРИМЕЧАНИЕ: я использую jrails

1 Ответ

1 голос
/ 18 января 2010

С вызовом .ajaxForm() вы можете обработать ответ самостоятельно. Вместо использования опции target вам придется обработать ответ, указав параметр success с функцией , которая будет выполнять следующие действия:

  • Удалить все, кроме строки заголовка ( похож на этот вопрос ) $("#MyTable tr:not(.table-header)").remove()
  • Добавить успешный ответ к стол в вопросе. $("#MyTable").append(response)

Другим вариантом будет визуализация частичного , который содержит строку заголовка, а также визуализирует ваш оригинальный частичный фрагмент с вашей коллекцией. Частичное, которое отображает другое частичное.

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