1

hiii 我是 Rails 的新手,我有一个名为 events 的模型,我有今天的事件、过去的事件和即将发生的事件。我在索引页面上显示我各自事件的计数,我想使用 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

在这里,我的计数功能能够显示今天、过去和即将发生的事件的计数,但我想使用 ajax 进行更新。请高手帮忙

4

2 回答 2

1

首先定义要更新的部分代码,然后在 javascript click 事件上调用此方法。

假设您的部分名称是 _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 回答