teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追記

2019/02/10 00:08

投稿

Gr.
Gr.

スコア89

title CHANGED
File without changes
body CHANGED
@@ -2,18 +2,79 @@
2
2
 
3
3
  そこでherokuと親和性が良いCloudinaryを使って画像をアップすることにしました。
4
4
 
5
- herokuに、Cloudinaryのアドオンを追加し、
6
- Cloudinaryの登録を済ませ使えるようにし、
7
- Railsのconfig以下にダウンロードしたcloudinary.ymlを入れ、
8
- 通常のadd ~ pushの手順でpushしたのですが、
5
+ ### 前提
9
- アプリ上で画像投稿してもCloudinaryに保存されずやはり消えてしまいます。
6
+ Railsで練習用アプリを作成しています。アプリというよりホームページに近いかもしれませんが。
10
7
 
11
- 何が足りないのでしょうか?
8
+ 100件本のデータを入れ、index一覧表示、showで各本の詳細を表示ます。
12
9
 
13
- > gem 'cloudinary'
10
+ showで詳細に飛んだ時、その本のカバーを画像で表示させようと思います。
14
11
 
12
+ Viewのbooks/newの画面にデータ入力フォームを設け、アプリ上でデータの登録をするとします。
15
- を入れる、と書いいる人もいたのですが、入れてbundle installたら、そんなgemは無とエラーが返ります。
13
+ 画像アップロードに関しは<%= f.attachment_field :image %>で実装います。
16
14
 
15
+ books/new.html.erb
16
+ ```html
17
+ <%= form_for(@book) do |f| %>
18
+ <table>
19
+  <tr>
20
+   <td><%= f.attachment_field :image %></td>
21
+  </tr>
22
+  <tr>
23
+   <td><%= f.text_field :image_title, placeholder: '画像のタイトル' %></td>
24
+  </tr>
25
+  <tr>
26
+   <td><%= f.text_field :title, placeholder: '本のタイトル' %></td>
27
+  </tr>
28
+  <tr>
29
+   <td><%= f.text_field :year, placeholder: '出版年' %></td>
30
+  </tr>
31
+   :
32
+ ```
17
- イルアップロドはcarrierwave後継とされるrefile使用ています。
33
+ このようなォームで本のタや出版年、カバ画像などを登録し、Viewbooks/showでその本のデータ表示します。
18
34
 
35
+ books/show.html.erb
36
+ ```html
37
+ <table>
38
+  <tr>
39
+   <td><%= @book.title %></td>
40
+  </tr>
41
+  <tr>
42
+   <td><%= attachment_image_tag @book, :image, :title => @book.image_title %></td>
43
+  </tr>
44
+   :
45
+ ```
46
+ Bookモデルには以下のように記述し、Booksコントローラのストロングパラメータに:image, :image_titleを入れています。
47
+
48
+ book.rb
49
+ ```model
50
+ attachment :image
51
+ ```
52
+ books_controller.rb
53
+ ```controller
54
+ private
55
+  def book_params
56
+   params.require(:book).permit(:image, :image_title, ...
57
+  end
58
+ end
59
+ ```
60
+ 開発環境(ローカル)では、これで問題なく画像が表示されます。
61
+
62
+ ### 本題
63
+ このアプリをherokuにデプロイし、DBが変わったので改めて何件かのデータをbooks/newの画面から入力したところ、初めは何も問題なく表示されたのですが、再度pushしたところ画像のデータだけが消えてしまいました。
64
+
65
+ そこで、冒頭でも触れましたが、外部のデータベースを用意してそちらに画像を保存することにしました。
66
+
67
+ 以下の手順を踏んで再度フォームから画像を登録したのですが、変化ありません。
68
+ 画像が結局Cloudinaryに保存されないのですが、あと何をすればいいのでしょうか。
69
+
70
+ 0. herokuにCloudinaryのアドオンを追加し
71
+ 0. Cloudinaryの登録を済ませ使えるようにし
72
+ 0. Railsのconfig以下にダウンロードしたcloudinary.ymlを入れ
73
+ 0. 通常のadd ~ pushの手順でpushした
74
+
75
+ アプリ上で画像を投稿してもCloudinaryに保存されずやはり消えてしまいます。
19
- 経験のある方、ご教授願います。
76
+ 経験のある方、詳しい方、ぜひご教授願います。
77
+
78
+ > gem 'cloudinary'
79
+
80
+ を入れる、と書いている人もいたのですが、入れてbundle installしたら、そんなgemは無いとエラーが返ります。

1

追記

2019/02/10 00:08

投稿

Gr.
Gr.

スコア89

title CHANGED
File without changes
body CHANGED
@@ -14,4 +14,6 @@
14
14
 
15
15
  を入れる、と書いている人もいたのですが、入れてbundle installしたら、そんなgemは無いとエラーが返ります。
16
16
 
17
+ ファイルアップロードはcarrierwaveの後継とされるrefileを使用しています。
18
+
17
19
  経験のある方、ご教授願います。