refile의 이미지 투고 기능을 사용하여 가져오는 방법

7608 단어 RefileRails

터미널에 ImageMagick 설치


terminal
#上から順番に実行する(実行するディレクトリは、どこでもいい。)
sudo yum -y install libpng-devel libjpeg-devel libtiff-devel gcc
cd
wget http://www.imagemagick.org/download/ImageMagick.tar.gz
tar -vxf ImageMagick.tar.gz
ls
cd ImageMagick-x.x.x-xx
./configure
make
sudo make install

rails 측면 설정


gem


gemfile
# 画像投稿用gem
gem "refile", require: "refile/rails", github: 'manfe/refile'
# 画像加工用(サイズ調整など)gem
gem "refile-mini_magick"
terminal
bundle

데이터베이스


다음과 같이 이미지를 저장하려는 테이블에 image_id를 추가합니다.
schema.rb
create_table "posts", force: :cascade do |t|
:
:
    #image_idと書いているが、実際は文字列。(後述)
    t.string "image_id" 
:
:
  end

모범


Post.rb
attachment :image

게시물


new.html.erb
:
:
  <%= f.attachment_field :image %>
:
:
한마디로 레일스로 투고하면 다음과 같은 화면이 나온다.

여기에 적힌 열쇠를 config에 붙여라.
config/initializers/application_controller_renderer
# Be sure to restart your server when you modify this file.

# ActiveSupport::Reloader.to_prepare do
#   ApplicationController.renderer.defaults.merge!(
#     http_host: 'example.org',
#     https: false
#   )
# end

Refile.secret_key = '3238beb2f9945d440d0140ba9a28ace320d1a8a67178697999696c08e6655867768c5b002538b2b5e6ec4f0bbdfb03b06aa0ee7679999bd58bfeb4bdd5ead8a3'

보존


posts_controller.rb
  def create
    Post.new(post_params).save
  end
:
:
  def post_params
    params.require(:post).permit(:title, :body, :image)
  end
참조~
투고할 때 binding.pry로params를 엿보다.
[1] pry(#<PostsController>)> post_params
=> <ActionController::Parameters 
{
"title"=>"aaaa", 
"body"=>"aaaaaa", 
"image"=>#<ActionDispatch::Http::UploadedFile:0x00007fb0b00af588 @tempfile=#<Tempfile:/tmp/RackMultipart20210202-14306-orj859.jpeg (closed)>, @original_filename="54b7e1f981b7df7c817af48d1b96ad5e_400x400.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"list[image]\"; filename=\"54b7e1f981b7df7c817af48d1b96ad5e_400x400.jpeg\"\r\nContent-Type: image/jpeg\r\n">
} permitted: true>
저장 후 SQL에서 image_ 사용id 보기.
terminal
rails dbconsole
dbconsole

sqlite> SELECT image_id FROM posts;                        
/* 以下のように画像が文字列で保存されている事がわかる。 */
/* 1枚目(コメント) */
d64ff76c065fc7b98c995e2c07611856ca20b2caae61632c2ac0f201c878
/* 2枚目(コメント) */
c675db59c69164df9a1f487146f676d2f32827943ed346caf443f01e7fa7v
:
:

표시


show.html.erb
:
:
<%= attachment_image_tag @post, :image, :fill, 300, 300, format: 'jpeg' %>
:
:
위에 그림이 나타날 것입니다.

좋은 웹페이지 즐겨찾기