วิธีจัดเตรียม URL รูปภาพในเครื่องจากแอป Rails 5 API เท่านั้น

เรามีเฉพาะ API, แอป Rails 5 (ดังนั้นจึงไม่มีไปป์ไลน์) เราต้องการให้ API ระบุ URL ไปยังรูปภาพบนเซิร์ฟเวอร์ของเรา ภาพนี้จัดทำโดยโมเดล รูปภาพนี้อาจอยู่ใน app/assets/images หรือ public/images วิธีใดที่จะต่อท้ายโฮสต์ / โดเมนปัจจุบันเข้ากับชื่อไฟล์ใน Rails Model

เราคาดว่า ActionController::Base.helpers.asset_url("solar.png") จะทำงาน แต่สิ่งนี้จะส่งกลับ "\solar.png"

เราได้ตั้งค่า default_url_options เป็น "localhost:3000"

เป็นที่ยอมรับได้หากให้โมเดลระบุเพียงชื่อไฟล์ และผู้แสดงมุมมองคอนโทรลเลอร์/json จัดเตรียมส่วน URL ผ่านทางตัวช่วย ฉันพูดว่า "ยอมรับได้" เนื่องจากแบบจำลองของเรากำลังตัดสินใจว่าควรส่งคืนรูปภาพใด บางครั้งรูปภาพนั้นมาจากเซิร์ฟเวอร์ภายในเครื่อง บางครั้งอาจเป็น URL แบบเต็มจากเซิร์ฟเวอร์อื่น หากตัวควบคุมระบุส่วน URL เราจะต้องจัดการทั้งสองกรณีแยกกัน


person Matt Scilipoti    schedule 18.07.2019    source แหล่งที่มา


คำตอบ (1)


คำตอบที่รวดเร็ว:

# development.rb
config.action_controller.asset_host = "http://localhost:3000"
# production.rb
config.action_controller.asset_host = "http://yourdomain.com"

ข้อผิดพลาดทั่วไปคือการตั้งค่า config.action_controller.default_url_options

จำไว้ว่าคุณมีสถานที่หลายแห่งในการตั้งชื่อโฮสต์ของคุณ:

config.action_controller.default_url_options
config.action_mailer.default_url_options
config.action_controller.asset_host
# Maybe others, I'm not sure

มักจะมีค่าเท่ากันแต่ไม่ใช่ทุกครั้ง

person jpheos    schedule 19.07.2019