Top > 開発ガイド > コンポーネント開発逆引きリファレンス > 添付ファイルを扱う
添付ファイルを扱う
対象バージョン
当ドキュメントはRubricks-0.6.x向けです。
概要
添付ファイルをアップロード/保存/表示するための機能です。
使い方
添付ファイルをアップロードする
添付ファイルをアップロードする方法には、以下の二通りがあります。
- TinyMCEを利用する
- rubricks.common.AjaxUploaderを利用する
TinyMCEを利用する場合はTinyMCEで添付ファイルPluginを利用するを参照してください。
ここでは、rubricks.common.AjaxUploaderを利用する方法を説明します。
Javascriptはローカルファイルを扱うことができないため、Railsのform_remote_tag(通常のAjax)によるファイルアップロードは行えません。
TinyMCEを利用せずにファイルアップロード機能を作成するには、本ライブラリを利用してください。
1. サブミット時にrubricks.common.AjaxUploader.submitを実行するようにフォームを作成します。
<!-- フォーム -->
<%=
start_form_tag({:controller => '/sample/index', :action => 'new'},
{:id => 'sample_form', :multipart => true,
:onsubmit => "rubricks.common.AjaxUploader.submit('test_result_id', this,
{onStart : function() { rubricks.common.rubricks_wait_message_open(); },
onComplete : function() { rubricks.common.rubricks_wait_message_close();},
}); return true;"
})
%>
<!-- ファイル送信欄 -->
<%= file_field_tag "upload_file" %>
<!-- 実行ボタン -->
<input type="button" id="sample_save_button" class="submit_inactive swap submit_normal" value="<%= hl('[_Common_Save]') %>"
onclick="rubricks.common.fire_onsubmit('sample_form', 'sample_save_button');" <%= rollover_attributes %> />
</form>
添付ファイルを保存する
1. 添付ファイルと関連を持つモデルに、acts_as_attachableメソッドを記述します。
これにより、添付ファイルを保存するためのメソッド(attachment_with)が使えるようになります。
class News::NewsItem < ActiveRecord::Base
acts_as_attachable({
:dependent => :destroy,
:save_options => {
:content_type => :anything,
:storage_type => :database,
}
})
end
2. コントローラに、attachment_withメソッドを記述します。
class News::IndexController < ApplicationController
def create
news_item= News::NewsItem.create(params[:news_item])
#アップロードされた添付ファイルと、モデルを関連付けて保存する
news_item.attachment_with(params[:attachment])
end
end
添付ファイルを表示する
1. コントローラで、添付ファイルを含むモデルを取得します。
@news_item = News::NewsItem.find(params[id], :include => :rubricks_attachments)
2. ビューに、render_attachmentを記述します。
<% @news_item.rubricks_attachments.each do | attachment | %>
<%= render_attachment(attachment, {:type => :file, :id => "news_item_attachment_#{attachment.id}"}) %>
<% end %>
関連項目
API
rubricks.common.AjaxUploader.submit(id, form, options)
- ファイルをアップロードできるように、フォームを拡張します。
| 引数 | 必須 | 初期値 | 型 | 説明 |
| id | - | - | String | HTMLのDOM-IDを指定します。 |
| form | - | - | Formオブジェクト | Formオブジェクトを指定します。 |
| options | - | - | Hash | フォームのサブミットに関するオプションです。 下記「オプション」を参照してください。 |
オプション:
| キー | 必須 | 初期値 | 型 | 説明 | ||||
| onStart | - | - | JavaScript関数 | サブミット開始時に実行するJavaScript関数を指定します。 | ||||
| onComplete | - | - | JavaScript関数 | サブミット終了時に実行するJavaScript関数を指定します。 | ||||
| onFailure | - | - | JavaScript関数 | サブミット処理でクライアント側にエラーが発生したときに実行するJavaScript関数を指定します。 | ||||
acts_as_attachable(options)
- 添付ファイルを扱えるように、モデルを拡張します。下記のメソッドが追加されます。
・has_many :rubricks_attachments, :through => :rubricks_attachment_links
・atachment_with
| 引数 | 必須 | 初期値 | 型 | 説明 |
| options | - | - | Hash | 添付ファイルを扱うためのオプションです。 下記「オプション」を参照してください。 |
オプション:
| キー | 必須 | 初期値 | 型 | 説明 | ||||
| :dependent | - | - | Symbol | 該当モデルのdestroy時に添付ファイルも削除するかどうか。 :destroyもしくはnilを指定します。 |
||||
| :save_options | - | - | Hash | 添付ファイル保存時(attachement_with実行時)のオプションです。 | ||||
| キー | 必須 | 初期値 | 型 | 説明 | ||||
| :content_type | - | :anything | Symbol | ・添付ファイルの種類を指定します(:anything もしくは :image)。 :imageを指定した場合、画像ファイル(gif/jpg/png)のみが許可されます。 |
||||
| :function_id | - | - | Integer | RubricksFunctionのID。 | ||||
| :function_name | - | 該当コンポーネントの'access'権限 | String | ・添付ファイルにアクセスするために必要な権限。 RubricksFunctionのID(数値)もしくは該当コンポーネントのFunctionName('access'や'admin'等)を指定します。 |
||||
| :name | - | 添付ファイルの元ファイル名 | String | ・添付ファイル保存時のファイル名。 | ||||
| :storage_type | - | :filesystem | Symbol | ・添付ファイルの保存先を指定します(:filesystem もしくは :database)。 ・:filesystemを指定した場合、該当コンポーネントの公開ファイルディレクトリに保存されます。 :databaseを指定した場合、データベース上に保存されます。 ※ファイルシステムの場合は静的ファイルとして保存されるため、パフォーマンス的に優位です。 データベースの場合はパフォーマンスは劣りますが、アクセス制御が行えるメリットがあります。 |
||||
attachment_with(attachments, options)
- 添付ファイルを保存します。
| 引数 | 必須 | 初期値 | 型 | 説明 |
| attachments | ○ | - | RubricksAttachment/Array | <%= file_field_tag %>等でアップロードされた添付ファイルを指定します。 複数ある場合はArrayに格納した上で指定します。 |
| options | - | - | Hash | 添付ファイルの保存オプション。 acts_as_attachableの:save_optionsを参照してください。 |
render_attachment (ra, options)
- 添付ファイルを表示します。
| 引数 | 必須 | 初期値 | 型 | 説明 |
| ra | ○ | - | RubricksAttachment | 表示する添付ファイルオブジェクト。 |
| options | - | - | Hash | 添付ファイルの表示オプション。下記「オプション」を参照してください。 |
オプション:
| キー | 必須 | 初期値 | 型 | 説明 | ||||
| :type | - | - | Symbol | ・添付ファイルの表示形式を指定します(:file もしくは :image)。 ・:fileを指定した場合、添付ファイルへのリンクを表示します。 :imageを指定した場合、画像を直接出力します。 ・省略した場合は添付ファイルの形式を自動判別して処理します。 (画像ファイルの場合は:image、その他の場合は:file) |
||||
| :text | - | - | String | ・添付ファイルアイコン横に表示する文字列を指定します。 「:type => :file」の場合のみ有効です。 |
||||
| :alt等 | - | - | Symbol | image_tagやlink_toで利用できるHTMLオプションもキーとして指定できます。 (:alt, :class, :id, :size, :title 等) |
||||
