代码之家  ›  专栏  ›  技术社区  ›  momchenr

从所有用户页面链接到用户配置文件、路由

  •  2
  • momchenr  · 技术社区  · 12 年前

    试图让我的all_users页面呈现所有拥有帐户的用户的列表,然后每个列表项都将是该用户配置文件页面的链接。我有正确呈现用户名的页面,但它们没有指向自己的用户页面。他们的用户页面应该是/user/username,但链接指向/username这显然会产生错误。我真的,真的,非常感谢你的帮助。堆栈溢出真的令人难以置信。

    型号:

    class User < ActiveRecord::Base
      # Include default devise modules. Others available are:
      # :token_authenticatable, :confirmable,
      # :lockable, :timeoutable and :omniauthable
      devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
    
      # Setup accessible (or protected) attributes for your model
         attr_accessible :email, :password, :password_confirmation, :remember_me, :username
         has_many :items
    
      validates_presence_of :username
      validates_uniqueness_of :username
    
      def to_param
        username
      end
    
    end
    

    控制器:

    class UsersController < ApplicationController
      def show
        @user = User.find_by_username(params[:id])
      end
      def index
    @user = User.find(:all)
      end
    end
    

    所有用户视图(_U):

    <div class="well">
      <h1>All users</h1>
    
      <% @user.each do |user| %>
        <%= link_to user.username, public_profile_path(user.username) %><br/>
      <% end %>
    </div>
    

    路线:

    Scratch::Application.routes.draw do
    
      resources :items
    
      devise_for :users
      match 'users/:id' => 'users#show'
      match '/users', :to => 'users#index', :as => "all_users", :via => "get"
      match ':username' => 'users#show', via: :get, as: :public_profile
    
      root :to => 'static_pages#home'
      get "about" => "static_pages#about"
    end
    
    2 回复  |  直到 12 年前
        1
  •  1
  •   RadBrad    12 年前
    match '/username/:name' => 'users#show', via: :get, as: :public_profile
    
        2
  •  1
  •   Polygon Pusher    12 年前

    我倾向于制作一个新的控制器,这样我就不会凌驾于设计之上。

    类似于Admin::Users,然后在那里我只做基本的脚手架,然后将该控制器中的vars映射到Devise用户模型。

    这样,我就可以重新设计前端使用的设计视图和后端使用的管理视图。