お世話になっております。
現在、railsインスタグラムクローンアプリを開発しており、検索機能を実装しようとコードを書いているのですが、下記エラーが解決できず、困っております。uninitialized constantと表示されているのでroutes.rb、Controllerのファイル名、Controllerのクラス名を確認したのですが、間違いははありませんでした。
何卒よろしくお願いいたします。
エラーメッセージ
NameError in MicropostsController#search uninitialized constant MicropostsController::Post Extracted source (around line #25): 23 def search 24 #Viewのformで取得したパラメータをモデルに渡す 25 @posts = Post.search(params[:search]) 26 end 27 28 private
routes.rb
Rails.application.routes.draw do root 'pages#top' get 'search', to: 'microposts#search', as: :search devise_for :users, controllers: { registrations: 'users/registrations', omniauth_callbacks: 'users/omniauth_callbacks', passwords: 'users/passwords'} resources :users do member do get :following, :followers end end resources :users, only: [:show, :index, :destroy] resources :microposts, only: [:create, :destroy] resources :relationships, only: [:create, :destroy] get '/notification', to:'pages#notification' get '/post', to:'pages#post' end
_search.html.erb
<p>検索</p> <%= form_tag(search_path,:method => 'get') do %> <%= text_field_tag :search %> <%= submit_tag 'Search', :content => nil %> <% end %>
microposts_controller.rb
class MicropostsController < ApplicationController before_action :authenticate_user!, only: [:create, :destroy] before_action :correct_user, only: :destroy def create @micropost = current_user.microposts.build(micropost_params) @micropost.image.attach(params[:micropost][:image]) if @micropost.save flash[:success] = "Micropost created!" redirect_to root_url else @feed_items = current_user.feed.paginate(page: params[:page]) render 'pages/top' end end def destroy @micropost.destroy flash[:success] = "Micropost deleted" redirect_to request.referrer || root_url end def search #Viewのformで取得したパラメータをモデルに渡す @posts = Post.search(params[:search]) end private def micropost_params params.require(:micropost).permit(:content, :image) end def correct_user @micropost = current_user.microposts.find_by(id: params[:id]) redirect_to root_url if @micropost.nil? end end
micropost.rb
class Micropost < ApplicationRecord #mount_uploader :image, ImageUploader belongs_to :user has_one_attached :image default_scope -> { order(created_at: :desc) } validates :user_id, presence: true validates :content, presence: true, length: { maximum: 140 } validates :image, content_type: { in: %w[image/jpeg image/gif image/png], message: "must be a valid image format" }, size: { less_than: 5.megabytes, message: "should be less than 5MB" } # 表示用のリサイズ済み画像を返す def display_image image.variant(resize_to_limit: [500, 500]) end def self.search(search) return Post.all unless search Post.where(['content LIKE ?', "%#{search}%"]) end end
`Post` というモデルが有るのであれば、掲載をしてください
回答1件
あなたの回答
tips
プレビュー