根據README for the CKEditor gem,我應該能夠爲圖像和附件設置替代範圍。我試圖做到這一點,它只是將其轉換爲ckeditor_assets表中的字段。如何在使用ckeditor rails gem時向ckeditor_assets表添加附加字段?
我可以創建一個遷移來添加必需的字段,但是如何配置ckeditor(大概通過自動生成的模型),以便在創建新記錄時使用正確的數據填充該字段?
根據README for the CKEditor gem,我應該能夠爲圖像和附件設置替代範圍。我試圖做到這一點,它只是將其轉換爲ckeditor_assets表中的字段。如何在使用ckeditor rails gem時向ckeditor_assets表添加附加字段?
我可以創建一個遷移來添加必需的字段,但是如何配置ckeditor(大概通過自動生成的模型),以便在創建新記錄時使用正確的數據填充該字段?
已解決。
我用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
在我看來,最簡單的解決方案:
#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
此不再工作作爲'CKEDITOR :: ApplicationController'超級控制器從'ApplicationController'改爲'的ActionController :: Base'(發佈ckeditor gem 4.1.0)。作爲解決方法,我將gem從「ApplicationController」繼承,因爲除了範圍確定之外,它還會提供適當的auth/auth。 – tamersalama
從4.2.4版本開始,ckeditor gem的這個工作已經開始,因爲這個可斷開的過程已經被刪除了。現在,我使用這裏指出的分支:https://github.com/galetahub/ckeditor/pull/778恢復這個變化 – tal