如何在 Rails 上的 Ruby 中创建多个索引页

How to create more than one index page in Ruby on Rails

我有两个不同的计划(ID 为 1 的计划和 ID 为 2 的计划)。我已经为每个创建了一个部分,以根据用户登录的计划显示在主页上。我想为每个计划创建两个不同的索引页面。

计划ID 1的用户需要被定向到计划ID为2的用户的索引,计划ID 2的用户需要被定向到计划ID为1的用户的索引。这是部分控制此功能的代码。我如何创建一个索引功能,在单击相关部分后将计划 ID 1 和计划 ID 2 用户发送到不同的页面?

pages/home.html.erb

 <div class="col-md-6">
        <% if current_user.plan.name == "mentor" %>
          <%= render partial: "pages/mentor" %>
        <% else %>
          <%= render partial: "pages/mentee" %>
        <% end %>
  </div>

pages/_mentee.html.erb

<div class="well">
    <h2 class="text-center">Mentor Community</h2>
    <h4 class='text-center'>Get the support you need.</h4>
    <br><%= link_to "Find a Mentor", "#", class: 'btn btn-default btn-lg btn-block' %>
</div>

pages/_mentor.html.erb

<div class="well">
    <h2 class="text-center">Mentee Com</h2>
    <h4 class='text-center'>Give the support that's needed.</h4>
    <br><%= link_to "Find a Mentee", "#", class: 'btn btn-default btn-lg btn-block' %>
</div>

删除条件的一个好方法是使用计划名称来查找部分。应该是这样的

<div class="col-md-6">
  <%= render partial: "pages/#{current_user.plan.name}" %>
</div>

但您需要确保每个计划都有其正确的部分文件。否则你会得到一个渲染错误,因为找不到部分。

这样做:

#config/routes.rb
root "pages#home"
resources :plans, only: :show #-> url.com/plans/1

#app/controllers/plans_controller.rb
class PlansController < ApplicationController
   def show
      @plan = Plan.find params[:id]
   end
end

#app/views/plans/show.html.erb
<% @plan.users.each do |user| %>
   <%= user.name %>
<% end %>

after click on the relative partial

您可以使用以下方法将用户转到特定计划页面:

#app/views/pages/home.html.erb
<% @plans.each do |plan| %>
   <%= link_to plan.id, plan %>
<% end %>

还有这么多你需要考虑,但现在,以上内容应该能帮助你了解整体结构。

让我解释一下你需要如何调整你的想法(这可能看起来离题了,但我保证会对你有很大帮助)...

以上是 Rails 是如何 意味着 工作的——它接受用户的请求,将其与 控制器 操作,然后用 模型 数据填充它。

Rails 的正确工作方式是使用名为 object orientated programming 的东西 - 每次您启动操作/请求时,它都必须调用和操作 对象 的数据。

虽然这看起来很复杂,但您越早了解它,您就能越快地制作出更复杂的 rails 应用程序。

--

您的问题表明您没有考虑数据驱动 rails 应用程序的全部潜力。

这并不重要,但如果您改变方法,去掉 pages 并使用 plansusers,您将能够拥有许多计划,如您所愿。

这是思考编程的正确方法(制作 系统 ,而不仅仅是快速修复),然后您可以根据需要使用它来扩展功能。