<%if!current_page?(action:'edit')%>错误。没有路线匹配{:action =>“ edit”,:controller =>“…”}

时间:2019-11-28 20:24:16

标签: ruby-on-rails erb

我的_footer.html.erb是(简体):

<footer class="footer">
  <nav class="navbar navbar-default navbar-fixed-bottom navbar-inverse">
      <% if logged_in? %>
         <li class="btn btn-primary"> <%= link_to 'Add New Connection', new_year_path %></li>
         <li class="btn btn-primary"> <%= link_to 'Add New Person', new_person_path %> </li>
         <li class="btn btn-primary"> <%= link_to 'Add New Address/Location', new_location_path %> </li>
      <% end %>
  </nav>
</footer>

但是我不希望在编辑时显示页脚;太容易单击这些按钮之一,而不是页面下方的CancelSubmit,页脚被卡在底部了。 views/layouts/application.html.erb<%= render 'layouts/footer' %>

我想我可以让三个edit.html.erg不使用上面的默认值,但是如果我可以在_footer.html.erg上添加另一个条件,这似乎会更容易。或其他方式。也许关于不提交就离开页面的事情?

基于@tsrandrei的评论,我尝试将页脚包装在<% if !current_page?(action: 'edit') %>等等<% end %>中,但随后收到错误No route matches {:action=>"edit", :controller=>"…"},控制器名称与页面相关。 >

1 个答案:

答案 0 :(得分:3)

<% if current_page?(action: 'edit') %>
  <footer class="footer">
    <nav class="navbar navbar-default navbar-fixed-bottom navbar-inverse">
      <% if logged_in? %>
         <li class="btn btn-primary"> <%= link_to 'Add New Connection', new_year_path %></li>
         <li class="btn btn-primary"> <%= link_to 'Add New Person', new_person_path %> </li>
         <li class="btn btn-primary"> <%= link_to 'Add New Address/Location', new_location_path %> </li>
      <% end %>
  </nav>
 </footer>
<% end %>

请参见https://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F

您还可以通过其他方法进行查看:

  • controller_path
  • controller_name
  • action_name

还要检查Rails: How to determine controller/action in view