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

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

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

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

Q&A

1回答

1935閲覧

railsでcarrierwaveを使用して画像をアップロードしたい

wk_rin

総合スコア27

Ruby on Rails

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

0グッド

0クリップ

投稿2017/06/12 15:08

編集2017/06/13 13:31

現在railsの練習をしています。
blog機能に画像を添付するアプリを作成したいのですが、
添付→投稿するとエラーメッセージが表示されてしまいます。

使用しているgemはcarrierwaveです。

イメージ説明

show.html.erb

<p id="notice"><%= notice %></p> <p> <strong>Title:</strong> <%= @blog.title %> </p> <p> <strong>Content:</strong> <%= @blog.content %> </p> <div class="form-group"> <%= image_tag(current_user.image, width: "100") %> <%= f.label :image,"ユーザー画像" %> <%= f.file_field :image %> <%= f.hidden_field :image_cache %> </div> <%= link_to 'Edit', edit_blog_path(@blog) %> | <%= link_to 'Back', blogs_path %>

current_userが宣言されていないことが原因だと思うのですが、
その代わりに何を入れてあげればいいのかがわかりません。
流れとしては、
・画像を投稿画面から添付する
・DBに登録する
・一覧画面に表示する、ということだと思うのですが……

使用しているrailsのverは5.0.3です。
使用環境はcloud9です。

知りたい情報がありましたら、質問をお願い致します。
どうか助けてください。よろしくお願い致します。

06/13 追記
conrollerとmodelの記述を追加します。
application_controllerとblogs_controllerの2箇所があります。

application_controller

class ApplicationController < ActionController::Base protect_from_forgery with: :exception before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:image]) devise_parameter_sanitizer.permit(:account_update, keys: [:image]) end end

blogs_controller

class BlogsController < ApplicationController before_action :set_blog, only: [:show, :edit, :update, :destroy] # GET /blogs # GET /blogs.json def index @blogs = Blog.all end # GET /blogs/1 # GET /blogs/1.json def show end # GET /blogs/new def new @blog = Blog.new end # GET /blogs/1/edit def edit end # POST /blogs # POST /blogs.json def create @blog = Blog.new(blog_params) respond_to do |format| if @blog.save format.html { redirect_to @blog, notice: 'Blog was successfully created.' } format.json { render :show, status: :created, location: @blog } else format.html { render :new } format.json { render json: @blog.errors, status: :unprocessable_entity } end end end # PATCH/PUT /blogs/1 # PATCH/PUT /blogs/1.json def update respond_to do |format| if @blog.update(blog_params) format.html { redirect_to @blog, notice: 'Blog was successfully updated.' } format.json { render :show, status: :ok, location: @blog } else format.html { render :edit } format.json { render json: @blog.errors, status: :unprocessable_entity } end end end # DELETE /blogs/1 # DELETE /blogs/1.json def destroy @blog.destroy respond_to do |format| format.html { redirect_to blogs_url, notice: 'Blog was successfully destroyed.' } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_blog @blog = Blog.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def blog_params params.require(:blog).permit(:title, :content) end end

model

application_record.rb

class ApplicationRecord < ActiveRecord::Base self.abstract_class = true end

blog.rb

class Blog < ApplicationRecord mount_uploader :image, ImageUploader end

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

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

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

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

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

guest

回答1

0

current_userが定義されていないのが問題って書いてますね
このshow.html.erbに関連するcontroller、modelがないと判断ができないので、まずはそちらを追加していただけますでしょうか?

投稿2017/06/13 00:58

hiyashikyuri

総合スコア388

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

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

wk_rin

2017/06/13 13:26

遅くなり、大変申し訳ございません。 conrollerとmodelの記述を追加しました。
hiyashikyuri

2017/06/14 01:08

よく見て見たら、show.html.erbの以下の部分がおかしくないですか? 配列.each do |f| <div class="form-group"> <%= image_tag(current_user.image, width: "100") %> <%= f.label :image,"ユーザー画像" %> <%= f.file_field :image %> <%= f.hidden_field :image_cache %> </div> end とかなら分かりますが、showメソッド内で何かしらの処理を加えている様子もないので これでいいのではないかと思います <div class="form-group"> <%= image_tag(current_user.image, width: "100") %> </div>
wk_rin

2017/06/16 16:37

返信遅くなりました。 実装してみましたが、以下のエラーが表示されます。 NameError in Blogs#show Showing /home/ubuntu/workspace/tweet/app/views/blogs/show.html.erb where line #14 raised: undefined local variable or method `current_user' for #<#<Class:0x000000037816a0>:0x007f8ddaecfda0> Did you mean? current_page? 試しにcurrent_userを@blogsにしてみたところ、 記事の投稿はできましたが、画像の投稿はできませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問