「Railsで画像をデータベースに登録し表示する。」の版間の差分
提供: sha.ngri.la
細 (→images.controller.rbを編集) |
細 (→images.controller.rbを編集) |
||
(同じ利用者による、間の2版が非表示) | |||
26行目: | 26行目: | ||
===images.controller.rbを編集=== | ===images.controller.rbを編集=== | ||
<pre> | <pre> | ||
− | def create | + | def create |
− | + | photo = image_params[:photo] | |
− | + | if photo != nil | |
− | if | + | 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 |
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)) %>