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--StringHTMLの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 等)