0

現在、Rails 3.0.3 を使用して Web サイトを開発しています。

eventsというモデルがあります。私のevents_controller.rbファイルには、次のようなコードがあります。

def destroy
  @event = Event.find(params[:id])
  @event.destroy
  #redirect_to events_url
  respond_to do |format|
    format.html { redirect_to (events_url), :notice => 'Event deleted' }
    format.js
  end
end

そこにindex.html.hamlファイルが1 つあります。

- content_for :title do
  Listing Events

%div#event
  = render :partial => "task"

_task.html.hamlという1 つの部分ファイルが あり、そこに div id を割り当て、ajax リモート true の場合: このように-

- @events.each do |event|
  %ol.hoverbox
    %li.all{:id =>"event_#{event.id}"}
      = link_to image_tag(event.photo.url), event_path(event)
      .abc
        = event.name
        %br/
      .bca
        = event.start_date
        = event.start_time
        = link_to 'Delete', event, :confirm => 'Are you sure?',
                                   :method => :delete,
                                   :remote => :true

そして最後に 、私が書いたdestroy.js.hamlがあります-

$('##{dom_id(@event)}').remove();

ajaxで正常に削除されていますが、カウンターは同じ値を示しており、ページを手動で更新した後、カウンターが減少しています。ajax経由で更新する方法を教えてください。

私のモデルであるevent.rbファイルでは、カウンターを維持するために次のようなイベントの数を数えています。

   def current_date
        Date.today
    end

    def self.find_current
        Event.find :all, :conditions => ['(start_date  = current_date)'], :order => 'start_date '
    end

    def self.count_past(current_date = Date.today)
       Event.count :all, :conditions => ['start_date < ?', current_date], :order => 'start_date'
    end

    def self.count_upcoming(current_date = Date.today)
       Event.count :all, :conditions => ['start_date > ?', current_date], :order => 'start_date'
   end

    def self.count_today(current_date = Date.today)
        Event.count :all, :conditions => ['start_date = ?', current_date], :order => 'start_date'
    end

subnav.html.hamlと呼ばれるレイアウトにもう 1 つパーシャルがあります。Web ページにカウントを表示しています。

      %li
        - if params[:controller] == "brands"
          // my code
        - elsif params[:controller] == "events"
          %a.blue.tt-top-center{:title => "Today's Events", :href => events_path(:view => "today") }#{Event.count_today}
          %span Today's Events

  %li
    - if params[:controller] == "brands"
 //my code
    - elsif params[:controller] == "events"
      /= link_to "Upcomming events", events_path(:view => "upcoming") 
      %a.tt-top-center{:title => "upcomming Events", :href => events_path(:view => "upcoming") }#{Event.count_upcoming}
      %span Upcoming Events

多くのリンクを検索しましたが、カウントを更新する方法がわかりません。ウェブサイトで私の基準に一致しないヒントが提供されているため、私を助けて詳細な方法で理解させてください。同じ名前を使用してください。私のコードで使用したクラスと URL について、あなたの助けに本当に感謝しています。

4

1 に答える 1

0

put $('##{dom_id(@event)}').reset(); in destroy.js.erb file.

于 2012-05-11T13:20:43.443 に答える