

Routing Error  
No route matches [POST] "/"  
と出てしまい詰まってしまいました。

処理内容。  
トップページにform_forでベータ版のメールアドレスを登録する入力窓を置き、そこにメールアドレスを入れてsubmitするとデータベースに保存されるという単純な処理なのですが、ルーティングエラーで先に進めません。  
以下コントローラー

[code]

    class RootController < ApplicationController
      def index
        @articles = Article.all
      end
    
      def new
        @guest = UserInvitationBetarelease.new
      end
    
      def create
        @guest = UserInvitationBetarelease.new(guest_params)
        @guest.save
        redirect_to root_index_path
      end
    
      private
    
      def guest_params
        params.require(:guest).permit(:email)
      end
    end
    
[/code]

  * 以下View

= form_for :guest do |f|  
= f.text_field :email  
= f.submit "送信"

ルートファイルは以下  
`resouces :root`

教えていただければ幸いです


CC BY-SA 3.0
2015-06-10T08:50:25.443
11216
2015-06-10T10:12:59.317
1065
question
ruby-on-rails ruby
Ruby on Railsのルーティングエラーに関して


POST / が定義されていないのに、そこにアクセスした為のエラーです。  
下記の rake コマンドで、現在定義されているルートを確認することができます。  
このコマンドの結果と、config/routes.rbの設定、formのaction属性を比べながら対応してはいかがでしょうか？

[code]

    bin/rake routes
    
[/code]

resources :root と指定した場合...

[code]

    # config/routes.rb
    
    resources :root
    
[/code]

以下のような感じで、`/root`から定義されるはずです。

[code]

    $ bin/rake routes
        Prefix Verb   URI Pattern              Controller#Action
    root_index GET    /root(.:format)          root#index
               POST   /root(.:format)          root#create
      new_root GET    /root/new(.:format)      root#new
     edit_root GET    /root/:id/edit(.:format) root#edit
          root GET    /root/:id(.:format)      root#show
               PATCH  /root/:id(.:format)      root#update
               PUT    /root/:id(.:format)      root#update
               DELETE /root/:id(.:format)      root#destroy
    
[/code]

formタグのaction URL が間違っているのでは無いでしょうか？

それと、厳密には調べていませんが、rootというリソース名やコントローラ名は、予約語に該当してしまいそうで、あまり良くないかと思います。変更することをおすすめします。


CC BY-SA 3.0
2015-06-10T09:31:50.657
11219
2015-06-10T10:12:59.317
2015-06-10T10:12:59.317
9529
9529
11216
answer