1

Railsアプリでユーザーアカウントを管理するためにdeviseを使用しています。私の開発環境では問題なく動作しています。Heroku にプッシュしたところ、/users/sign_up ページ (users/sign_in は機能しています) に移動すると、「探していたページが存在しません」というメッセージが表示されます。ログを確認したところ、次のようになりました。

ActionController::RoutingError (No route matches [GET] "/users/sign_up")

私のroutes.rbは次のとおりです。

  get "home/index"

  get "deals/new"
  get "deals/all"

  resources :deals

  devise_for :users

  root :to => "home#index"

何がうまくいかないのですか?

ありがとう

アップデート:

ルートは次のとおりです。

              home_index GET    /home/index(.:format)          home#index
               deals_new GET    /deals/new(.:format)           deals#new
               deals_all GET    /deals/all(.:format)           deals#all
                   deals GET    /deals(.:format)               deals#index
                         POST   /deals(.:format)               deals#create
                new_deal GET    /deals/new(.:format)           deals#new
               edit_deal GET    /deals/:id/edit(.:format)      deals#edit
                    deal GET    /deals/:id(.:format)           deals#show
                         PUT    /deals/:id(.:format)           deals#update
                         DELETE /deals/:id(.:format)           deals#destroy
        new_user_session GET    /users/sign_in(.:format)       devise/sessions#new
            user_session POST   /users/sign_in(.:format)       devise/sessions#create
    destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy
           user_password POST   /users/password(.:format)      devise/passwords#create
       new_user_password GET    /users/password/new(.:format)  devise/passwords#new
      edit_user_password GET    /users/password/edit(.:format) devise/passwords#edit
                         PUT    /users/password(.:format)      devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)        devise/registrations#cancel
       user_registration POST   /users(.:format)               devise/registrations#create
   new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new
  edit_user_registration GET    /users/edit(.:format)          devise/registrations#edit
                         PUT    /users(.:format)               devise/registrations#update
                         DELETE /users(.:format)               devise/registrations#destroy
                    root        /                              home#index

更新

heroku で rake ルートをレーキしましたが、結果は大きく異なりました。

home_index GET    /home/index(.:format)     home#index
 deals_new GET    /deals/new(.:format)      deals#new
 deals_all GET    /deals/all(.:format)      deals#all
     deals GET    /deals(.:format)          deals#index
           POST   /deals(.:format)          deals#create
  new_deal GET    /deals/new(.:format)      deals#new
 edit_deal GET    /deals/:id/edit(.:format) deals#edit
      deal GET    /deals/:id(.:format)      deals#show
           PUT    /deals/:id(.:format)      deals#update
           DELETE /deals/:id(.:format)      deals#destroy
      root        /                         home#index

デバイスがセットアップされていないようです。私は何を間違っていますか?

4

5 に答える 5

2

devise user model :registerable は本番環境では設定されていませんでしたが、ローカル環境では設定されていました。そのため、ローカルでは機能し、Heroku では機能しませんでした。

于 2012-08-04T13:36:21.273 に答える
0

「users」モデルと「sign_up」でデフォルトでどのようなことが機能するかはわかりませんが、sign_upというコントローラーメソッドがある場合は、次のように追加できます。

get "users/sign_up"

ルートへ.rb

sign_upに使用するメソッドが「作成」のようなものである場合は、試してみてください

match 'sign_up', :to => 'users#create'
于 2012-08-02T15:23:19.697 に答える
0
devise_for :users, :path_names => {
   :sign_in => 'signin',
   :sign_out => 'signout',
   :sign_up => 'signup'
  },
于 2012-08-02T15:53:14.570 に答える
0

routes.rb ファイルに次を追加します。

     resource:users

その後、rake ルートを実行して、ルートが存在するかどうかを確認します。

于 2017-01-09T19:39:52.460 に答える
0

申し訳ありませんが、あなたがデバイスを使用しているという点全体を見落としていました。サインアップルートは「/registration/sign_up」になるはずだと思います

独自のルートを定義するには、routes.rb でこれを試してください

devise_scope :user do
  get "/sign_up" => "devise/registrations#new"
end
于 2012-08-02T15:43:09.103 に答える