【问题标题】:Current_page for multiple pages of the same action?Current_page 用于同一操作的多个页面?
【发布时间】: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"}

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

<% 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 &amp;&amp; controller_name != :professors) 试过这个,但似乎没有用。

标签: ruby-on-rails ruby


【解决方案1】:

尝试从参数中获取操作的值和控制器名称

<% unless params[:action] == 'show' && params[:controller] == 'professors' %>
  <div class="center-block ">
<% end %>

【讨论】:

  • 很高兴为您提供帮助。
猜你喜欢
  • 2015-05-08
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 2013-05-19
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多