同一动作的多个页面的Current_page?

时间:2017-07-10 17:29:59

标签: ruby-on-rails ruby

除了教授#show之外,我想为所有页面显示一个div。

所以我认为我可以在applicait.html.erb中添加一个除非声明我开始使用这样的东西:

 <% unless current_page?(controller: "professors", action: "show") %>
   <div class="center-block">
 <% end %>

这适用于show动作,但当用户导航到另一个页面时,网站会因此错误而崩溃:

No route matches {:action=>"show", :controller=>"professors"}

通过查看herehere我意识到我需要额外的参数:

<% unless current_page?(controller: 'professors', action: 'show', id: @professor.id) %>
  <div class="center-block ">
 <% end %>

这在show动作中再次起作用,但在任何其他页面上都会出现此错误:

undefined method `id' for nil:NilClass

我认为问题是什么,我认为,除了教授#show @ professor.id意味着什么,但我不知道如何解决它。我甚至不确定我是否会以正确的方式进行此操作,请记住我的最终目标是在所有页面上显示中心区块div,除了显示特定教授的页面。

1 个答案:

答案 0 :(得分:2)

尝试从params

获取操作和控制器名称的值
<% unless params[:action] == 'show' && params[:controller] == 'professors' %>
  <div class="center-block ">
<% end %>