如何在 Ruby on Rails 中链接个人资料页面

Posted

技术标签:

【中文标题】如何在 Ruby on Rails 中链接个人资料页面【英文标题】:How can I link a profile page in Ruby on Rails 【发布时间】:2022-01-15 23:06:38 【问题描述】:

我目前正在使用 Ruby on Rails 构建一个市场。现在我正在尝试使用设计构建个人资料页面(基于本教程:https://www.youtube.com/watch?v=BEkpwM-GvMQ)。 为了设计,我创建了用户模型。 对于个人资料页面,我创建了用户控制器。 对于市场,我创建了脚手架页面(页面)。 每个用户都有一个 id,个人资料页面基本上基于该 id。 有人知道我如何在他的导航栏中链接某人的个人资料页面吗?

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

当我单击导航栏 (&lt;%= link_to "My Profile", users_path , class:" dropdown-item" %&gt;) 上的“我的个人资料”链接时,我会进入此页面: profile page bug

感谢您的阅读。如果有人知道如何解决这个问题,它将帮助我分配。

【问题讨论】:

需要转到当前用户 user_path(current_user) 的页面,而不是显示所有用户的 users_path 工作!非常感谢! 【参考方案1】:

users_path 链接到显示所有用户的索引页面。您看到错误的原因是因为您在控制器中只有 show 操作设置。要链接到特定的用户个人资料页面,您需要链接到显示路径,即user_path(@user)。您需要传递@user 才能让rails 知道要在页面上显示哪个用户。

链接看起来像这样:

<%= link_to "My Profile", user_path(@user), class:" dropdown-item" %>

【讨论】:

以上是关于如何在 Ruby on Rails 中链接个人资料页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby on Rails 中裁剪图像

如何在 ruby​​ on rails 中显示 vimeo 和 youtube 嵌入链接的缩略图?

如何使用链接/按钮更改列属性 - Ruby on Rails

如何让引导选项卡链接链接到 ruby​​ on rails 中的另一个部分文件以显示内容?

Ruby-on-Rails:如何摆脱“你被重定向”页面

如何通过 websockets 在 ruby​​ on rails 和 reactJS 之间发送数据