質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

1419閲覧

carrierwaveで画像が表示されない

KOO_

総合スコア58

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

0クリップ

投稿2019/01/21 16:37

gemでcarrierwaveを導入しましたが、index、showで画像が表示されません。

consoleを見てもnilと出ており、データがどこにも保管されていないようです。

https://qiita.com/Inp/items/cc447237e23bf10d159ek

上記サイトを拝見して構築しましたが、その他にも何か定義する必要があるのでしょうか?

gem 'carrierwave'
t.string :title #タイトル t.string :file #ファイル←これにファイルを添付 t.string :keyword #キーワード t.string :description #説明 t.text :body #本文

post.rb

1 mount_uploader :file, ImagesUploader

new.html.erb

1<td><%= file_field :post, :file %></td>

index.html.erb

1 <%= image_tag post.file.to_s, :class=>"post-index-image" %>

show.html.erb

1 <p><%= @post.file.url %></p>
keiiti👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こちらの質問をみた際にはQiitaのリンクが切れていたので
以下の記事で動いたのでそれを元に説明させていただければと思います。
(また、だいぶ時間が経っているのでそもそもご自身で解決済みだったりしているかもしれませんが..)

https://qiita.com/chokosuki4400/items/647f33528fba1fe3f7ee

すこし記事だけでは詰まることもあると思うので実際に自分が動かして見た際のチェックポイントをまとめておきました.

まず記事ではUserモデルは最初からある想定みたいなので
rails g scaffold User name のコマンドでとりあえず自分は一回作ってためしてみました。

また、記事で

permitにimageを追加

とありますがそこはscaffoldで生成した users_controller.rb の71行目あたりの以下の部分を

def user_params params.require(:user).permit(:name) end

このようにしました
params.require(:user).permit(:name, :image)

最後に表示させるところですがとりあえずindex.html.erbで表示できればshowでもいけるのは当然なのでindexだけコードを載せようと思います。

1 <p id="notice"><%= notice %></p> 2 3 <h1>Users</h1> 4 5 <table> 6 <thead> 7 <tr> 8 <th>Name</th> 9 <th colspan="3"></th> 10 </tr> 11 </thead> 12 13 <tbody> 14 <% @users.each do |user| %> 15 <tr> 16 <img src="<%= user.image %>" width="100"> 17 <td><%= user.name %></td> 18 <td><%= link_to 'Show', user %></td> 19 <td><%= link_to 'Edit', edit_user_path(user) %></td> 20 <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are y ou sure?' } %></td> 21 </tr> 22 <% end %> 23 </tbody> 24 </table> 25 26 <br> 27 28 <%= link_to 'New User', new_user_path %>

16行目のところが追記した部分です。

次に入力側と書いてある部分ですが
_form.html.erbの編集を以下のようにしました

1 <%= form_with(model: user, local: true) do |form| %> 2 <% if user.errors.any? %> 3 <div id="error_explanation"> 4 <h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2> 5 6 <ul> 7 <% user.errors.full_messages.each do |message| %> 8 <li><%= message %></li> 9 <% end %> 10 </ul> 11 </div> 12 <% end %> 13 14 <div class="field"> 15 <%= form.label "顔写真" %> 16 <%= form.file_field :image %> 17 </div> 18 19 <div class="field"> 20 <%= form.label :name %> 21 <%= form.text_field :name %> 22 </div> 23 24 <div class="actions"> 25 <%= form.submit %> 26 </div> 27 <% end %>

14~17行までが追加した部分です。(divはいらないですがないのも不恰好なので)
また、記事では f.label :顔写真 などしていますがscaffoldで生成されたフォームはfでまとめていないでの上記のようによしなに変更しました。

これで思い通りの実装が行えるかと思います。

投稿2019/10/23 06:35

kuraudo

総合スコア137

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuraudo

2019/10/23 06:38

と言うか、この実装を行ったあとに質問の方を再度拝見したのですがおそらく単純に ``` <td><%= file_field :post, :file %></td> ``` の部分formなりfが抜けていて ``` <td><%= f.file_field :post, :file %></td> ``` っとすればちゃんとフォームが送られデータが格納される気がしました。 なので出来ていなかったのはフォームがちゃんと送れてなかったからかも知れませんね!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問