localhost在rails上重定向了太多次ruby

时间:2017-12-30 22:00:04

标签: ruby-on-rails ruby devise

我正在使用devise / Ruby on Rails,当我尝试打开我的localhost时,我得到了以下无限循环,并且不知道为什么因为我所做的唯一改变是使用Faker gem创建种子,并创建用户登录时的显示视图。

起初我认为我的控制器中的if / else语句出了问题,因为当我重新设置数据时,没有current_user登录,它应该带我到通过设计创建的新用户注册路径,但是失去了为什么它重复自己..

非常感谢任何和所有帮助!

以下是终端:

Started GET "/users/sign_in" for 127.0.0.1 at 2017-12-30 13:53:58 -0800
Processing by UsersController#show as HTML
  Parameters: {"id"=>"sign_in"}
Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)

UsersController

class UsersController < ApplicationController

before_action :authenticate_user!

  def show
    if current_user.present?
      @user = current_user
      @item = Item.new
      @items = @user.items
    else
      redirect_to new_user_registration_path
    end  
  end
end

用户#节目

<h2> Your to-do list</h2>


  <div class="col-md-8">
    <div class='items'>
      <%= render partial: "items/item", local: { item: @item} %>
    </div>
  </div>
  <div class="col-md-8">
    <div class='new-item'>
      <%= render partial: "items/form", local: { item: @item } %>
    </div>
  </div>

路线:

Rails.application.routes.draw do
  get 'welcome/index'

  get 'welcome/about'

  root 'users#show'

  resources :users do
    resources :items, only: [:new, :create, :index]
  end


  devise_for :users
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

4 个答案:

答案 0 :(得分:2)

能够找出root问题,即在routes.rb中放置代码的顺序。

答案 1 :(得分:0)

您的路线应该有devise_for :users

答案 2 :(得分:0)

您已经拒绝了访客用户的权限我的意思是哪个用户未使用此设置进行登录before_action :authenticate_user!这意味着用户无法访问UsersController之后未经重新申请权限登录的任何操作实际上不需要的show行动if current_user.present? show行动应该是这样的

@user = current_user
@item = Item.new
@items = @user.items

删除if else条件。

希望能提供帮助

答案 3 :(得分:0)

就我而言:

users_controller.rb

  before_action :logged_in?, only: :new

  def new
    @user = User.new
    render layout: "session"
  end

application_controller.rb

def logged_in?
    redirect_to users_new_url unless current_user.present?
end

当我尝试重定向到'users / new'页面时,发生了相同的错误。

这仅仅是因为我试图重定向到'用户/新'页面,而 deflogin_in?也正在重定向到同一页面。

然后,我更改了 application_controller.rb 代码,如下所示:

def logged_in?
    redirect_to root_url unless current_user.blank?
end

错误已解决。