1

私の Rails アプリケーションでは、localhost:3000/users/:id ではなく、localhost:3000/users/permalink になるように、ユーザー用のランダムなパーマリンクを作成しようとしています。

ここで作成された投稿に従いました: レールで ID をランダムな 8 桁の英数字にする方法は?

投稿の後、ユーザー用にランダムなパーマリンク列とページを作成できましたが、サブページを機能させることができませんでした。私のユーザーのために、私は現在サブページを持っています: フォロワーなど.

質問: ページは現在、localhost:3000/users/ /followers などにルーティングされています。しかし、これらのページを localhost:3000/users/ /followers など:idにもルーティングできるように、routes.rb を修正する方法を誰かが知っていますか?permalink

ルート.rb

match 'users/:permalink' => 'users#show', :as => "show_user"

resources :users do
  member do
    get :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) %>">
    My Followers ( <%= @user.followers.count %> )
</a>

ユーザー/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>
4

2 に答える 2