1

hiii私はレールの初心者です。イベントと呼ばれるモデルがあり、今日のイベント、過去のイベント、今後のイベントなどがあります。インデックス ページにそれぞれのイベントのカウントを表示しています。ページがちらつかないように、ajax を使用してカウントを更新したいと考えています。

コントローラーの私のコードは次のとおりです。

def index
  case params[:view]
  when 'past'
    @events  = Event.find (:all, :conditions => ['start_date < ?', current_date], :order => 'start_date')
  when 'today'
    @events = Event.find (:all, :conditions => ['(start_date  = current_date)'], :order => 'start_date ')
  when 'upcoming'
    @events  = Event.find( :all, :conditions => ['start_date > ?', current_date], :order => 'start_date')
  else
    @events = Event.all
  end
end 

ビューのコードは次のとおりです。

%li
    - if params[:controller] == "brands"
      %a.tt-top-center{:title => "Total approvals pending"}#{Brand.all.size} 
      %span Past Brands   
    - elsif params[:controller] == "events"
      %a.tt-top-center{:title => "upcoming Events", :href => events_path(:view => "upcoming") }#{Event.count_upcoming}
      %span Upcoming Events



  %li
    - if params[:controller] == "brands"
      %a.tt-top-center{:title => "Total approvals pending"}#{Brand.all.size} 
      %span New Brand
     - elsif params[:controller] == "events"
      %a.blue.tt-top-center{:title => "past Events", :href => events_path(:view => "past")  }#{Event.count_past}
      %span Past Events Blockquote

ここで私の count 関数は、今日、過去、および今後のイベントの数を表示できますが、ajax を使用して更新したいと考えています。専門家が助けてください

4

2 に答える 2

1

まず、更新するコードを部分的に定義し、javascript クリック イベントでこのメソッドを呼び出します。

あなたの部分的な名前が_update_events.html.erbであるとします

   <div id ="left"><%=render :partial => "update_event"%></div>


      function remove_im_address(id) {


        var container = $("#left");
         $.ajax({
           url: '/your controller/action',
           type: 'get',
           dataType: 'html',
           processData: false,
           success: function(data) {
            container.html(data);

         }
      });
   }

あなたのコントローラーで

 def action
    #your logic

    render :partial => "events/update_event" ,:layout => false
 end

events は、パーシャルを置くディレクトリです。

このようにして、ページの特定の div のみを更新して楽しむことができます........

于 2012-05-02T07:16:17.113 に答える
0

ファイルを作成し、index.js.hamlそこに次の行を追加しました。

$("event").update("#{escape_javascript(render(@event))}");

それは私のために働いています。

于 2012-09-07T09:28:17.240 に答える