「Railsで画像をデータベースに登録し表示する。」の版間の差分
提供: sha.ngri.la
細 |
細 (→images.controller.rbを編集) |
||
(同じ利用者による、間の4版が非表示) | |||
26行目: | 26行目: | ||
===images.controller.rbを編集=== | ===images.controller.rbを編集=== | ||
<pre> | <pre> | ||
− | def create | + | def create |
photo = image_params[:photo] | photo = image_params[:photo] | ||
− | |||
if photo != nil | if photo != nil | ||
image_params[:photo] = photo.read | image_params[:photo] = photo.read | ||
end | end | ||
+ | @image = Image.new(image_params) | ||
</pre> | </pre> | ||
− | <code>photo = imgae_params[:photo]</code> | + | <code>photo = imgae_params[:photo]</code>に上の4行を追加しました。 |
<pre> | <pre> | ||
def image_params | def image_params | ||
43行目: | 43行目: | ||
==画像の表示== | ==画像の表示== | ||
===routes.rbの編集=== | ===routes.rbの編集=== | ||
− | + | 次の5行を追加。 | |
<pre> | <pre> | ||
− | |||
resources :images do | resources :images do | ||
member do | member do | ||
53行目: | 52行目: | ||
</pre> | </pre> | ||
+ | ===images_controllers.rbの編集=== | ||
+ | <pre> | ||
+ | def show_image | ||
+ | @image = Image.find(params[:id]) | ||
+ | send_data @image.photo, :type => 'image/jpeg', :disposition => 'inline' | ||
+ | end | ||
+ | </pre> | ||
+ | |||
+ | ===index.html.erbの編集=== | ||
+ | <pre> | ||
+ | <%= link_to image_tag(show_image_image_path(image), :width => 300),image %> | ||
+ | </pre> | ||
+ | |||
+ | ===show.html.erbの編集=== | ||
+ | <pre> | ||
+ | <%= image_tag(show_image_image_path(@image)) %> | ||
+ | </pre> | ||
==Link== | ==Link== |
2024年1月19日 (金) 04:20時点における最新版
目次
モデルなどの状況
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 photo = image_params[:photo] if photo != nil image_params[:photo] = photo.read end @image = Image.new(image_params)
photo = imgae_params[:photo]
に上の4行を追加しました。
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)) %>