Ruby-on-rails – No route matches [GET] “/posts/new”

rubyruby-on-rails

I am completely new to ruby, andI am following this ruby rails tutorial step by step, except for the detail that I've called my app "cinema".

I created a resource named "posts", there is a controller class called posts controller. From the page posts/new I should post a text with title, and execute an action (show). I am trying to add the show action in the routes file and in the controller class.

The show action should be called when a form is submitted, the form includes a title and a text field, mapped into the database.

In paragraph 5.7, there is a non-clear instruction: it says to add this line:

post GET    /posts/:id(.:format)      posts#show

To my routes.rb file, but it doesn't say where to write it exactly, I put it under resources:posts (maybe it's the wrong place, it doesn't saying anything about that).

I also added the show method to the controller class:

def show
    @post = Post.find(params[:id])
end
private
    def post_params
        params.require(:post).permit(:title,:test);
    end

But when I submit the form I still get this error:

enter image description here

The rake routes command result:

Prefix Verb URI Pattern Controller#Action
welcome_index GET /welcome/index(.:format) welcome#index
root GET / welcome#index
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format) posts#update
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy

Best Answer

It doesn't tell you to add it to routes.rb. It's one of the routes that is created automatically with:

resources :posts

Remove the line from your routes.rb restart the server and continue with the tutorial.

Tip: you can run rake routes to see all available routes in your application.