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
Post a Comment