ruby on rails でブログサイトを製作しています。投稿を表示する際に template is missing エラーがずっと出ます
受付中
回答 0
投稿
- 評価
- クリップ 1
- VIEW 735
ruby on rails にてブログサイトを製作していますが、投稿を表示する(showアクション)においてエラーが出ます。
投稿は micropost モデル、投稿者(ユーザ)は user モデルを作成してあります。当然ながら、micropost は belong to user の関係にあります。
エラーの内容は
Missing template microposts/show, application/show with {:locale=>[:ja], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: * "/home/ubuntu/workspace/my_blog/app/views" * "/usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/devise-3.4.1/app/views"
というものです。
あともう少しで完成、というところで困っています。よろしくお願いします。microposts/show に関連するモデル、コントローラー、ビュー、そして route.rb のソースを以下に貼り付けておきます。
app/models/micropost.rb
app/controllers/microposts_controller.rb
投稿は micropost モデル、投稿者(ユーザ)は user モデルを作成してあります。当然ながら、micropost は belong to user の関係にあります。
エラーの内容は
Missing template microposts/show, application/show with {:locale=>[:ja], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: * "/home/ubuntu/workspace/my_blog/app/views" * "/usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/devise-3.4.1/app/views"
というものです。
あともう少しで完成、というところで困っています。よろしくお願いします。microposts/show に関連するモデル、コントローラー、ビュー、そして route.rb のソースを以下に貼り付けておきます。
app/models/micropost.rb
class Micropost < ActiveRecord::Base
belongs_to :user, class_name: "User", foreign_key: "user_id"
STATUS_VALUES = %w(draft user_only public)
validates :title, presence: true, length: { maximum: 200 }
validates :content, presence: true, length: { maximum: 4000 }
default_scope -> { order('created_at DESC') }
validates :user_id, presence: true
validates :status, inclusion: { in: STATUS_VALUES }
scope :common, -> { where(status: "public") }
scope :published, -> { where("status <> ?", "draft") }
scope :full, ->(user) {
where("status <> ? OR user_id = ?", "draft", user.id) }
scope :readable_for, ->(user) { user ? full(user) : common }
scope :open, -> {
now = Time.current
where("posted_at <= ?", now) }
class << self
def status_text(status)
I18n.t("activerecord.attributes.micropost.status_#{status}")
end
def status_options
STATUS_VALUES.map { |status| [status_text(status), status] }
end
def sidebar_entries(user, num)
readable_for(user).order(posted_at: :desc).limit(num)
end
end
end
app/controllers/microposts_controller.rb
class MicropostsController < ApplicationController
before_action :authenticate_user!
# (中略)
# 記事詳細
def show
@micropost = Micropost.readable_for(current_user).find(params[:id])
end
# (中略)
private
def micropost_params
params.require(:micropost).permit(:title, :content, :posted_at, :status)
end
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
redirect_to root_url if @micropost.nil?
end
end
app/views/microposts/show.html.erb
<% @page_title = @micropost.title + " - " + @micropost.user.name + "さんのブログ" %>
<h1><%= @micropost.user.name %>さんのブログ</h1>
<h2><%= @micropost.title %></h2>
<% if current_member == @micropost.user %>
<p><%= link_to "編集", [:edit, @micropost] %></p>
<% end %>
<%= simple_format(@micropost.content) %>
<%= render "footer", micropost: @micropost %>
app/config/routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => {
:registrations => "registrations"
}
get "users/show"
resources :users do
collection { get "search" }
resources :microposts, only: [:index]
end
resources :users, only: [:show, :index, :destroy]
resources :microposts
resources :contacts, only: [:new, :create]
root 'top#index'
match '/help', to: 'static_pages#help', via: 'get'
match '/about', to: 'static_pages#about', via: 'get'
match '/contact', to: 'static_pages#contact', via: 'get'
match '/blog', to: 'microposts#index', via: 'get'
end
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 89.99%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる