Вопрос

I have write down in routes

match '/signup', to: 'users#new', via: [:get, :post]

when i submit the form show me error

My form code is like this

<%= form_for @user, url: {action: "new"}  do |f| %>

And form submit on this url not on singup

http://localhost:3000/users/new

and show me error

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

Rails.root: /home/jaskaran/rails_project

when i check rake output, it's show me

jaskaran@jaskaran-Vostro-1550:~/rails_project$ rake routes
        Prefix Verb          URI Pattern                    Controller#Action
          root GET           /                              static_pages#home
          help GET           /help(.:format)                static_pages#help
         about GET           /about(.:format)               static_pages#about
       contact GET           /contact(.:format)             static_pages#contact
    microposts GET           /microposts(.:format)          microposts#index
               POST          /microposts(.:format)          microposts#create
 new_micropost GET           /microposts/new(.:format)      microposts#new
edit_micropost GET           /microposts/:id/edit(.:format) microposts#edit
     micropost GET           /microposts/:id(.:format)      microposts#show
               PATCH         /microposts/:id(.:format)      microposts#update
               PUT           /microposts/:id(.:format)      microposts#update
               DELETE        /microposts/:id(.:format)      microposts#destroy
         users GET           /users(.:format)               users#index
               POST          /users(.:format)               users#create
      new_user GET           /users/new(.:format)           users#new
     edit_user GET           /users/:id/edit(.:format)      users#edit
          user GET           /users/:id(.:format)           users#show
               PATCH         /users/:id(.:format)           users#update
               PUT           /users/:id(.:format)           users#update
               DELETE        /users/:id(.:format)           users#destroy
        signup POST|GET|POST /signup(.:format)              users#new
     posts_new GET           /posts/new(.:format)           posts#new
  posts_create POST          /posts/create(.:format)        posts#create

I am learning ruby and rails 4 +

Это было полезно?

Решение

Even though your route maps to the new action of the users controller, your form needs to point to the URI pattern, in your case /signup.

When in doubt, you can find the URI pattern and other information in your routes. Run rake routes in your console and you'll see this:

signup GET|POST /signup(.:format)     users#new

Rails generates helper methods to use in your views for each of the routes, based on the route prefix. In your case you can use the helper method signup_path. To fix the problem, change your view code to this:

<%= form_for @user, url: signup_path do |f| %>

Check the Rails documentation for more information.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top