「Railsで画像をデータベースに登録し表示する。」の版間の差分
提供: sha.ngri.la
細 (→routes.rbの編集) |
細 (→images.controller.rbを編集) |
||
27行目: | 27行目: | ||
<pre> | <pre> | ||
def create | def create | ||
− | + | upload_file = image_params[:photo] | |
image = {} | image = {} | ||
− | if | + | if upload_file != nil |
− | + | image[:photo] = upload_file.read | |
end | end | ||
</pre> | </pre> |
2014年8月20日 (水) 17:14時点における版
目次
モデルなどの状況
mysql> describe images; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | filename | varchar(255) | YES | | NULL | | | memo | text | YES | | NULL | | | photo | mediumblob | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+
photo
に画像を登録します。
画像の登録
_form.html.erbを編集
<div class="form-group"> <%= f.label :photo %> <%= f.file_field :photo %> </div>
を追加しました。
images.controller.rbを編集
def create upload_file = image_params[:photo] image = {} if upload_file != nil image[:photo] = upload_file.read end
photo = imgae_params[:photo]
以下5行を追加しました。
def image_params params.require(:image).permit(:filename, :memo, :photo) end
def image_params
に:photo
を追加しました。
画像の表示
routes.rbの編集
次の5行を追加。
resources :images do member do get 'show_image' end end
images_controllers.rbの編集
def show_image @image = Image.find(params[:id]) send_data @image.photo, :type => 'image/jpeg', :disposition => 'inline' end
index.html.erbの編集
<%= link_to image_tag(show_image_image_path(image), :width => 300),image %>
show.html.erbの編集
<%= image_tag(show_image_image_path(@image)) %>