如何在 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
并使用 plans
和 users
,您将能够拥有许多计划,如您所愿。
这是思考编程的正确方法(制作 系统 ,而不仅仅是快速修复),然后您可以根据需要使用它来扩展功能。
我有两个不同的计划(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
并使用 plans
和 users
,您将能够拥有许多计划,如您所愿。
这是思考编程的正确方法(制作 系统 ,而不仅仅是快速修复),然后您可以根据需要使用它来扩展功能。