refile의 이미지 투고 기능을 사용하여 가져오는 방법
터미널에 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"
terminalbundle
데이터베이스
다음과 같이 이미지를 저장하려는 테이블에 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' %>
:
:
위에 그림이 나타날 것입니다.
Reference
이 문제에 관하여(refile의 이미지 투고 기능을 사용하여 가져오는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dam-san/items/f743517a29ccd9eb0ff6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)