登录后如何将用户重定向到他/她的个人资料。After_sign_in方法?

时间:2015-05-29 02:29:09

标签: ruby-on-rails devise

周四大家快乐,我有一个关于路线和重定向的快速问题。我正在进行一项铁路任务,要求我在登录后将路由器重定向到他/她的个人资料。我将如何做到这一点? after_sign_in方法?这是我的路线:

Rails.application.routes.draw do
  devise_for :users
  resources :users

  get 'welcome/index'
  root :to => 'welcome#index'
end

用户控制器:

class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
  end

  private
   def user_params
     params.require(:user).permit(:name, :email)
   end
end

设计/会话(登录页面)

<h2>Sign in</h2>

<div class="row">
  <div class="col-md-8">
    <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
      <%= devise_error_messages! %>
      <div class="form-group">
        <%= f.label :email %>
        <%= f.email_field :email, autofocus: true, class: 'form-control', placeholder: "Enter email" %>
      </div>
      <div class="form-group">
        <%= f.label :password %>
        <%= f.password_field :password, class: 'form-control', placeholder: "Enter password" %>
      </div>
      <div class="form-group">
        <% if devise_mapping.rememberable? %>
          <%= f.label :remember_me, class: 'checkbox' do %>
            <%= f.check_box :remember_me %> Remember me
          <% end %>
        <% end %>
        <%= f.submit "Sign in", class: 'btn btn-success' %>
      </div>
      <div class="form-group">
        <%= render "devise/shared/links" %>
      </div>
    <% end %>
  </div>
</div>

应用程序控制器

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  before_action :configure_permitted_parameters, if: :devise_controller?

  def after_sign_in_path_for(resource)
    user_show_path
  end

   protected
   def configure_permitted_parameters
     devise_parameter_sanitizer.for(:sign_up) << :name
   end
end

我尝试在应用程序控制器中定义after_sign_in_path但收到此错误:未定义的局部变量或方法`user_show_path&#39;

1 个答案:

答案 0 :(得分:2)

您需要调用的网址助手为user_path(resource),而不是user_show_path。 (Devise会将当前用户作为您的资源。)

查看Rails guide on routing,了解在路线中使用resources时生成的帮助程序的详细信息。