2006-04-26 (水) [長年日記]
■ [Rails] FileColumnを使ってみるよ(初級)
れしぴぶっくの『Processing Uploaded Images』の「Also See」に載っていたやつ。これはスゴス。クオリティタカス。画像のアップロードが面倒なのでRails嫌いになった人もこれで安心!(たぶん)
でも、日本国では確認画面があるのですよ(しかもセッション使わないやつ!)とか思ってたら対応してやがんの!すげー!
というわけで、やり方を見てみるよ。
テキトーなモデルを作るよ(MySQL)
CREATE TABLE samples ( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, image VARCHAR(200) NULL, PRIMARY KEY(id) )
scaffold実行
$ ./script/generate scaffold sample
モデルにオキマリフレーズを追加
class Sample file_column :image end
Controller修正しまーす
confirmメソッド(確認画面)を追加しました。
class SamplesController < ApplicationController
def index
new
render :action => 'new'
end
def show
@sample = Sample.find(params[:id])
end
def new
@sample = Sample.new(params[:sample])
end
def confirm
new
end
def create
@sample = Sample.new(params[:sample])
if @sample.save
flash[:notice] = 'Sample was successfully created.'
redirect_to :action => 'show', :id => @sample
else
render :action => 'new'
end
end
end
new(新規画面)のView
multipartをフォームに追加するのと、 独自へるぱの file_column_field を追加した。 フォームの飛び先はconfirm。
<h1>New sample</h1>
<%= start_form_tag({:action => 'confirm'}, {:multipart => true} )%>
<%= file_column_field 'sample', 'image' %><br/>
<%= submit_tag "Confirm" %>
<%= end_form_tag %>
confirm(確認画面)のView
<h1>Confirm New sample</h1>
<%= start_form_tag :action => 'create' %>
<%= image_tag url_for_file_column('sample', 'image') %>
<%= hidden_field 'sample', 'image_temp' %>
<%= submit_tag "Create" %>
</form>
ここでのポインツはコレ。
<%= hidden_field 'sample', 'image_temp' %>
(しばらく悩んだのは内緒だ)
はーい、createされたので、show(詳細表示)しまーす(たむけん風)
独自へるぱでごー。
<%= image_tag url_for_file_column('sample', "image") %>
スバラシスなあ。ホホホーイ。
[ツッコミを入れる]
