Pergunta

I just finished railstutorial by michael hartl lesson 9. On localhost everything looks fine, but when i deploy application on heroku some users are on wrong places in user's list (for example, Example User have to be at first page, but it's at second page). Why does it happen?

My appliction: https://mordor-depth.herokuapp.com/users

You can sing-in with Example User: example@railstutorial.org foobar

Sorry, for a stupid question:)

users_controller.rb

class UsersController < ApplicationController
  before_action :signed_in_user, only: [:index,:edit,:update,:destroy]
  before_action :correct_user,   only: [:edit, :update]
  before_action :admin_user, only: :destroy
  def index
    @users=User.paginate(page: params[:page])
  end

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

  def new
    @user=User.new
  end

  def create
    @user = User.new(user_params)
    if @user.save
      sign_in @user
      flash[:success]="Welcome to the Sample App!"
      redirect_to @user
    else
        render 'new'
    end
  end

  def destroy
    User.find(params[:id]).destroy
    flash[:success]='User deleted!'
    redirect_to users_url
  end

  def admin_user
    redirect_to(root_url) unless current_user.admin?
  end

  def edit

  end

  def update
    if @user.update_attributes(user_params)
      flash[:success] = "Profile updated"
      redirect_to @user
    else
      render 'edit'
    end
  end

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

    #Before filters
    def signed_in_user
      store_location
      redirect_to signin_url, notice:'Please sign in.' unless signed_in?
    end

    def correct_user
      @user = User.find(params[:id])
      redirect_to(root_url) unless current_user?(@user)
    end
end

index.html.erb

<% provide(:title, 'All users') %>
<h1>All users</h1>
<%= will_paginate %>

<ul class="users">
  <%= render @users %>
</ul>

<%= will_paginate %>

_user.html.erb

<li>
    <%= gravatar_for user, size:52 %>
    <%=link_to user.name, user %>
    <% if current_user.admin? && !current_user?(user)%>
        | <%= link_to "delete", user, method: :delete, data: { confirm: "You sure?" } %>
    <% end %>
</li>
Foi útil?

Solução

You can see on the index action that you are not doing any ordering:

def index
  @users=User.paginate(page: params[:page])
end

you can easily order by name doing

def index
  @users = User.order(:name).paginate(page: params[:page])
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top