そこで、興味深い問題が発生しました。デバイスのサインアップおよびサインイン要求をオーバーライドして、適切なプロファイル ページにリダイレクトしようとしていますが、エラーが発生しています。プロファイルと URL は、console、link_to でアクセスするか、入力することで機能します。何らかの理由で、devise メソッドがルーティングされません。理由はわかりません。とにかく、貢献または解決するすべての人に賛成票を投じてください。ありがとう!
ルート:
root :to => 'pages#index'
get "pages/index"
devise_for :users, :path => 'accounts', :controllers => { :registrations => "registrations" }
get 'users/:id/profile' => 'profiles#show', :as => 'current_profile'
get 'users/:id/profile/edit' => 'profiles#edit', :as => 'edit_current_profile'
put 'users/:id/profile' => 'profiles#update'
resources :users do
resources :profiles
end
登録コントローラー:
class RegistrationsController < Devise::RegistrationsController
protected
def after_sign_up_path_for(resource)
edit_current_profile_path(resource)
end
def after_sign_in_path_for(resource)
current_profile_path(resource)
end
end
プロファイル コントローラ
def show
@user = current_user
@profile = @user.profile
respond_to do |format|
format.html
end
end
エラーメッセージ:
Routing Error
No route matches {:controller=>"profiles", :action=>"show"}
Try running rake routes for more information on available routes.
表示: edit.html.erb
<%= form_for([@profile.user, @profile]) do |f| %>
<% if @profile.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@profile.errors.count, "error") %> prohibited this profile from being saved:</h2>
<ul>
<% @profile.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :real_name %><br />
<%= f.text_field :real_name %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>