現在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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/13 13:26
2017/06/14 01:08
2017/06/16 16:37