2013-08-08 3 views
0

관리자가 새 사용자를 만들 수있는 양식이 있습니다.이 양식에는 remote: true이 있습니다. 사용자가 성공적으로 생성되면 모든 사용자를 표시하는 페이지의 섹션이 업데이트됩니다. 내가 캐싱이 설정했기 때문에 이것은 ... 생산에서 발생되지레일 : 캐시 스위퍼 및 유효 기간이 만료 된 조각

create.js.erb :

<% if @user.valid? %> 
    <% type = (@user.type == "Athlete" ? "athletes" : "high_school_coaches") %> 
     alert("<%= @user.email %> created!"); 
     $('form#new_user').find('input:not(:hidden, :submit)').val(''); 
     $('.<%= type %>-container').html("<%= j render \"school_admin/#{type}/all\", users: @users.in_groups_of(3, false) %>") 
<% else %> 
    alert("<%= @user.errors.full_messages.to_sentence %>"); 
<% end %> 

UserSweeper가 : 생산 $('.<%= type %>-container').html("<%= j render \"school_admin/#{type}/all\", users: @users.in_groups_of(3, false) %>")에서

class UserSweeper < ActionController::Caching::Sweeper 
    observe Athlete, HighSchoolCoach 

    def after_create(record) 
    expire_cache(record) 
    end 

    def after_update(record) 
    expire_cache(record) 
    end 

    def expire_cache(record) 
    type = record.is_a?(HighSchoolCoach) ? "coach" : "athlete" 
    expire_fragment("all_school_admin_#{type.pluralize}") 
    end 
end 

이 작동하지 않습니다

I 때문에 보기에 다음과 같은 캐시 조각이 있어야합니다.

<% cache('all_school_admin_athletes') do %> 
    <% users.each do |row_users| %> 
    <div class="row"> 
     <% row_users.each do |user| %> 
     <%= render user %> 
     <% end %> 
    </div> 
    <% end %> 
<% end %> 

Application.rb

config.autoload_paths += %W(
    #{config.root} 
    #{config.root}/lib 
    #{config.root}/app/models 
    #{config.root}/app/models/concerns 
    #{config.root}/app/sweepers 
) 

# Activate observers that should always be running. 
config.active_record.observers = :user_sweeper 

누구든지이 문제가 발생합니까?

cache_sweeper :user_sweeper, only: [:create]

:

답변

0

내 컨트롤러에이 추가 잊어 버렸 ... 그것을 알아 냈다
관련 문제