私はユーザーがいて、ユーザーがプロファイルを持っているプロジェクトに取り組んでいます。ユーザー認証の目的でデバイスgemを使用しています。コントローラーのアクションのパスを変更したため、原因不明の動作が発生しました。
Test::Application.routes.draw do
match '/:username' => 'profile#show' , :as => :username
get "profile/update"
get "static_pages/index"
devise_for :users
サーバーログには次のように表示されます。
Started POST "/users" for 127.0.0.1 at 2013-02-22 03:07:48 +0530
Processing by ProfileController#show as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Tr90BvI6sztk7gxlPm6KF3td3xIe91SpCZDGsIniv60=", "user"=>{"username"=>"example", "email"=>"example@email.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up", "username"=>"users"}
Rendered profile/show.html.erb within layouts/application (0.1ms)
Completed 200 OK in 12ms (Views: 11.5ms | ActiveRecord: 0.0ms)
データがデータベースに挿入されておらず、ユーザー名パラメータが変更されています。ルートをデフォルトルートに変更すると、
match '/:username' => 'profile#show' , :as => :username
に変更されました
get "profile/show"
すべてが正常に戻りました。データが挿入され、すべてが正常に機能します。ユーザー登録のときにプロファイルコントローラーからのアクションが呼び出される理由とアクションがわかりません。rake routes
次の出力が得られます
username /:username(.:format) profile#show
profile_update GET /profile/update(.:format) profile#update
static_pages_index GET /static_pages/index(.:format) static_pages#index
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 / static_pages#inde
前もって感謝します。