我如何在 Rails Ruby 中 link 个人资料页面
How can I link a profile page in Ruby on Rails
我目前正在 Rails 上与 Ruby 建立一个市场。现在我正在尝试使用设计构建个人资料页面(基于本教程:https://www.youtube.com/watch?v=BEkpwM-GvMQ)。
对于设计,我创建了用户模型。
对于个人资料页面,我创建了用户控制器。
对于市场,我创建了脚手架页面(页面)。
每个用户都有一个 ID,个人资料页面基本上基于该 ID。
有人知道我如何在他的导航栏中 link 某人的个人资料页面吗?
app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@user_pages = @user.pages
end
end
app/views/layouts/application.html.erb(基本上是导航栏)
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<header>
<!--NAVBAR-->
<nav class="navbar navbar-expand" style="background-color: #B1D3FE;">
<div class="container-fluid">
<a class="navbar-brand" href="../pages"><%= image_tag("navbar/logo.png") %></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto ">
</ul>
<% if !user_signed_in? %>
<li class="nav-item list-unstyled" >
<%= link_to 'Login/Register', new_user_session_path, class:"btn", style:"background-color: #00188A; color: white;" %>
</li>
<% end %>
<% if user_signed_in? %>
<li class="nav-item dropdown list-unstyled me-5">
<a class=" btn nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false" style="background-color: #00188A; color: white;">
Profile
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li>
<%= link_to "My Profile", users_path , class:" dropdown-item" %>
</li>
<li>
<%= link_to "Edit Profile", edit_user_registration_path, class:" dropdown-item" %>
</li>
<li><hr class="dropdown-divider"></li>
<li>
<%= link_to "Settings", edit_user_registration_path, class:" dropdown-item" %>
</li>
<li>
<%= link_to "Logout", destroy_user_session_path, method: :delete, class:" dropdown-item" %>
</li>
</ul>
</li>
<% end %>
</div>
</div>
</nav>
</header>
<body>
<% if notice %>
<%= render 'layouts/alerts' %>
<% end %>
<%= yield %>
app/views/users/show.html.erb
<%= @user.email %>
<% @user_pages.each do |pages| %>
<%= link_to pages.title, page_path(pages) %>
<% end %>
app/config/routes.rb
Rails.application.routes.draw do
devise_for :users
resources :pages
resources :users
root to: 'pages#index'
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
当我在导航栏 (<%= link_to "My Profile", users_path , class:" dropdown-item" %>
) 上点击我的个人资料 link 时,我登陆了这个页面:
profile page bug
感谢您的阅读。如果有人知道如何解决这个问题,它会帮助我分配。
users_path
link 到显示所有用户的索引页面。您看到错误的原因是因为您在控制器中只有 show
操作设置。要 link 到特定用户的个人资料页面,您将 link 到显示路径 user_path(@user)
。您需要传递 @user
以便 rails 知道要在页面上显示哪个用户。
link 看起来像这样:
<%= link_to "My Profile", user_path(@user), class:" dropdown-item" %>
我目前正在 Rails 上与 Ruby 建立一个市场。现在我正在尝试使用设计构建个人资料页面(基于本教程:https://www.youtube.com/watch?v=BEkpwM-GvMQ)。 对于设计,我创建了用户模型。 对于个人资料页面,我创建了用户控制器。 对于市场,我创建了脚手架页面(页面)。 每个用户都有一个 ID,个人资料页面基本上基于该 ID。 有人知道我如何在他的导航栏中 link 某人的个人资料页面吗?
app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@user_pages = @user.pages
end
end
app/views/layouts/application.html.erb(基本上是导航栏)
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<header>
<!--NAVBAR-->
<nav class="navbar navbar-expand" style="background-color: #B1D3FE;">
<div class="container-fluid">
<a class="navbar-brand" href="../pages"><%= image_tag("navbar/logo.png") %></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto ">
</ul>
<% if !user_signed_in? %>
<li class="nav-item list-unstyled" >
<%= link_to 'Login/Register', new_user_session_path, class:"btn", style:"background-color: #00188A; color: white;" %>
</li>
<% end %>
<% if user_signed_in? %>
<li class="nav-item dropdown list-unstyled me-5">
<a class=" btn nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false" style="background-color: #00188A; color: white;">
Profile
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li>
<%= link_to "My Profile", users_path , class:" dropdown-item" %>
</li>
<li>
<%= link_to "Edit Profile", edit_user_registration_path, class:" dropdown-item" %>
</li>
<li><hr class="dropdown-divider"></li>
<li>
<%= link_to "Settings", edit_user_registration_path, class:" dropdown-item" %>
</li>
<li>
<%= link_to "Logout", destroy_user_session_path, method: :delete, class:" dropdown-item" %>
</li>
</ul>
</li>
<% end %>
</div>
</div>
</nav>
</header>
<body>
<% if notice %>
<%= render 'layouts/alerts' %>
<% end %>
<%= yield %>
app/views/users/show.html.erb
<%= @user.email %>
<% @user_pages.each do |pages| %>
<%= link_to pages.title, page_path(pages) %>
<% end %>
app/config/routes.rb
Rails.application.routes.draw do
devise_for :users
resources :pages
resources :users
root to: 'pages#index'
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
当我在导航栏 (<%= link_to "My Profile", users_path , class:" dropdown-item" %>
) 上点击我的个人资料 link 时,我登陆了这个页面:
profile page bug
感谢您的阅读。如果有人知道如何解决这个问题,它会帮助我分配。
users_path
link 到显示所有用户的索引页面。您看到错误的原因是因为您在控制器中只有 show
操作设置。要 link 到特定用户的个人资料页面,您将 link 到显示路径 user_path(@user)
。您需要传递 @user
以便 rails 知道要在页面上显示哪个用户。
link 看起来像这样:
<%= link_to "My Profile", user_path(@user), class:" dropdown-item" %>