我有两个不同的计划(计划ID为1,计划ID为2)。我根据用户登录的计划在主页上创建了部分内容。我想为每个要定向的计划创建两个不同的索引页面。
计划ID 1用户需要定向到计划ID为2的用户索引,而计划ID 2用户需要定向到计划ID为1的用户索引。这里是控制此功能的部分代码。如何在单击相对部分后创建将计划ID 1和计划ID 2用户发送到不同页面的索引功能?
信息页/ 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>
信息页/ _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>
信息页/ _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>
答案 0 :(得分:2)
这样做:
#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 %>
单击相对部分后
您可以使用以下内容将用户发送到特定计划页面:
#app/views/pages/home.html.erb
<% @plans.each do |plan| %>
<%= link_to plan.id, plan %>
<% end %>
你需要考虑更多,但就目前而言,上述内容应该有助于你了解整体结构。
让我解释一下你需要如何调整自己的想法(这可能看起来很不合适,但是会对你有所帮助,我保证)...
以上是Rails 意味着的工作原理 - 它接受用户的请求,将其与控制器操作相匹配,然后用填充它>模型数据。
Rails工作的正确方法是使用名为object orientated programming的东西 - 每次启动操作/请求时,都必须调用&amp;操纵对象的数据。
虽然这可能看起来很复杂,但是越早了解它,您就能越快地制作更复杂的轨道应用程序。
-
您的问题意味着您没有考虑数据驱动的rails应用程序的全部潜力。
并不重要,但是如果你改变了方法以便摆脱pages
而不是plans
与users
,那么你就可以拥有尽可能多的计划如你所要。
这是考虑编程的正确方法(制作系统,而不仅仅是快速修复),然后您可以根据需要使用它来扩展功能。
答案 1 :(得分:-1)
删除条件的好方法是使用计划名称来查找部分。它会是这样的
<div class="col-md-6">
<%= render partial: "pages/#{current_user.plan.name}" %>
</div>
但您需要确保每个计划都有正确的部分文件。否则,您将收到渲染错误,因为找不到部分错误。