Rails - How to route for users with permalink? -


for rails application, trying create random permalink users not localhost:3000/users/:id, rather, localhost:3000/users/permalink.

i have followed post made here: how make id random 8 digit alphanumeric in rails?

following post, have been able create random permalink column , pages users, have not been able sub-pages work. users, have sub-pages: followers, etc.

question: pages routed localhost:3000/users/:id/followers, etc. know how fix routes.rb can route these pages localhost:3000/users/permalink/followers, etc.

routes.rb

match 'users/:permalink' => 'users#show', :as => "show_user"  resources :users   member     :followers   end end 

user.rb

attr_accessible :permalink  before_create :make_it_permalink  def make_it_permalink   self.permalink = securerandom.base64(8) end 

users_controller.rb

def show   @user = user.find_by_permalink(params[:permalink]) end  def followers   @title = "followers"   @user = user.find(params[:id])   @users = @user.followers.page(params[:page]).per_page(5)   render 'show_follow' end 

users/_header.html.erb

<%= render 'users/followerstats' %> 

users/_followerstats.html.erb

<a href = "<%= followers_user_path(@user) %>">     followers ( <%= @user.followers.count %> ) </a> 

users/show_follow.html.erb

<div class = "container">   <%= render 'header' %>   <% provide(:title, @title) %>   <div class="row">     <div class="span12">        <h4><%= @title %></h4>       <% if @users.any? %>         <ul class="users">           <%= render @users %>         </ul>         <%= will_paginate %>       <% end %>    /div> </div> 

i got work adding following:

routes.rb

match 'users/:permalink/followers' => 'users#followers', :as => "followers_user" 

users_controller.rb

def followers     @title = "followers"     @user = user.find_by_permalink(params[:permalink])     @users = @user.followers.page(params[:page]).per_page(5)     render 'show_follow' end 

users/_followerstats.html.erb

<a href = "<%= followers_user_path(@user.permalink) %>">    followers ( <%= @user.followers.count %> ) </a> 

*****update:**

based on suggestion of @benjamin sinclaire , post here (best way create unique token in rails?), fixed make_it_permalink in user.rb:

def make_it_permalink     loop       # can create permalink random 8 digit alphanumeric       self.permalink = securerandom.urlsafe_base64(8)       break self.permalink unless user.where(permalink: self.permalink).exists?     end end 

Comments