【发布时间】:2017-07-10 17:29:59
【问题描述】:
我想为除教授#show 之外的所有页面显示一个 div。
所以我认为我可以在 applicaiton.html.erb 中添加一个除非声明,我从以下内容开始:
<% unless current_page?(controller: "professors", action: "show") %>
<div class="center-block">
<% end %>
这适用于显示操作,但是当用户导航到另一个页面时,网站会因以下错误而崩溃:
No route matches {:action=>"show", :controller=>"professors"}
我通过查看 here 和 here 意识到我需要额外的参数:
<% unless current_page?(controller: 'professors', action: 'show', id: @professor.id) %>
<div class="center-block ">
<% end %>
这在 show 操作中再次起作用,但在任何其他页面上都会因此错误而崩溃:
undefined method `id' for nil:NilClass
我认为,除了professors#show @professor.id 之外,我看到了问题所在,但我不知道如何解决它。我什至不确定我是否以正确的方式进行此操作,请记住我的最终目标是在所有页面上显示中心块 div,但显示特定教授的页面除外。
【问题讨论】:
-
我认为你应该使用这个条件:If current_action?(:show) && current_controller?(:professors)
-
current_action?是自定义方法吗?因为我用
if (action_name != :show && controller_name != :professors)试过这个,但似乎没有用。
标签: ruby-on-rails ruby