0

そこで、興味深い問題が発生しました。デバイスのサインアップおよびサインイン要求をオーバーライドして、適切なプロファイル ページにリダイレクトしようとしていますが、エラーが発生しています。プロファイルと 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 %>
4

1 に答える 1

1

ルート ヘルパーに属性を指定する必要があります。やってみて

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
于 2012-09-13T01:31:36.397 に答える