2012-08-23 42 views

回答

2

已解決。

我用before_save過濾器來設置字段,因爲我想要它。然後在應用程序控制器中更改方法以將該字段用作範圍。

# models/ckeditor/asset.rb 

before_save :set_company_id 

def set_company_id 
    self.company_id = assetable.try(:company_id) 
end 


# controllers/application_controller.rb 

protected 

def ckeditor_pictures_scope(options = { :company_id => "#{company_id}" }) 
    ckeditor_filebrowser_scope(options) 
end 

def ckeditor_attachment_files_scope(options = { :company_id => "#{company_id}" }) 
    ckeditor_filebrowser_scope(options) 
end 
+0

此不再工作作爲'CKEDITOR :: ApplicationController'超級控制器從'ApplicationController'改爲'的ActionController :: Base'(發佈ckeditor gem 4.1.0)。作爲解決方法,我將gem從「ApplicationController」繼承,因爲除了範圍確定之外,它還會提供適當的auth/auth。 – tamersalama

+0

從4.2.4版本開始,ckeditor gem的這個工作已經開始,因爲這個可斷開的過程已經被刪除了。現在,我使用這裏指出的分支:https://github.com/galetahub/ckeditor/pull/778恢復這個變化 – tal

0

在我看來,最簡單的解決方案:

#controllers/application_controller.rb 
protected 

def ckeditor_pictures_scope(options = { :assetable_id => "#{current_page.id}" ,:assetable_type => "Page" }) 
    ckeditor_filebrowser_scope(options) 
end 

def ckeditor_attachment_files_scope(options = { :assetable_id => "#{current_page.id}" ,:assetable_type => "Page" }) 
    ckeditor_filebrowser_scope(options) 
end 


def ckeditor_before_create_asset(asset) 
    asset.assetable = current_page if current_page 
    return true 
end 
相關問題