Ich arbeite an einem einfachen Ruby on Rails Blog. Wenn ein Nutzer einen Beitrag einreicht, möchte ich, dass er auf die Posts-Seite weitergeleitet wird. Anstatt umgeleitet zu werden, erhalte ich einen NoMethodError in PostsController#create
- undefined method 'post_path' for #<PostsController:0x007ff379d72110> Did you mean? posts_path post_params root_path
Fehler.Beitrag wird nicht auf die show-Seite weitergeleitet
post_controller.rb
class PostsController < ApplicationController
before_action :authenticate_user!
def new
@post = Post.new
end
def create
@post = current_user.posts.new(post_params)
if @post.save
redirect_to post_path(@post)
else
render :new
end
end
def show
@post = Post.find(params[:id])
end
private
def post_params
params.require(:post).permit(:title, :body, :all_tags)
end
end
show.html.erb
<h1 class="show_title">
<%[email protected]%>
</h1>
<p class="show_date">submiited <%= time_ago_in_words(@post.created_at) ago%></p>
<p class="show_body"><%[email protected]%></p>
routes.rb
Rails.application.routes.draw do
devise_for :users
root 'homes#show'
resources :users, only: [:show, :edit, :update]
resources :posts, only: [:new, :create]
resource :relationships, only: [:create, :destroy]
Sie müssten zeigen, was Sie in Ihrer routes.rb-Datei haben – fanta
@fanta Routen hinzugefügt. – DavidK
Ich sehe, Sie versuchen, auf die 'show' Aktion umzuleiten, aber Sie haben nur Ihre Routen für' new' und 'create' definiert, fügen Sie dort' show' hinzu: 'resources: posts, only: [: new ,: create,: show] ' – fanta