Search code examples
ruby-on-railsruby-on-rails-4

No route matches [POST] "/articles/new"


When I try to submit the form its giving me the error

No route matches [POST] "/articles/new"

the files are: new.html.erb
this file which contains the form with a text field and text area:

<%= form_for :article, url: articles_path do |f| %>

here the url: is to match post request which is a create

form's title

<%= f.label :title %><br>

form's text field

<%= f.text_field :title %></p>

form's title

<%= f.label :text %><br>

form's text area

<%= f.text_area :text %></p>           
<p>
<%= f.submit %>
</p>
<% end %>

route file is

Rails.application.routes.draw do

resources :article
end

controller is the controller with its methods new and create

whenever I submit the form its giving the error, even I used the URL: articles_path which for default post request, I used @articles also in the form but it is giving me the same error. I am new to the Rails so I tried many ways but I could not find the solution

class ArticlesController < ApplicationController

  def new #new method which is a get request
  end

  def create #create method which is a post request
  end
end

whenever I submit the form its giving the error, even I used the url: articles_path which for default post request. and I kept

def create
end

in the controller


Solution

  • change:

    resources :article
    

    to:

    resources :articles #plural
    

    that way it will map to:

    articles_path    POST    /articles(.:format)     articles#create