我试图在Rooms
模型的所有显示页面中隐藏此按钮。我在@extra
中存储了一组房间id
,但每当我尝试使用current_page?(room_path(@extra))
时,它都不起作用,但当我指定id时,例如current_page?(room_path(6))
,它起作用并隐藏按钮。我做错了什么?
<% unless current_page?(controller: 'rooms') || current_page?(room_path(@extra))%>
<button onclick="myFunction()" class="button btn btn-light bg-white rounded-pill shadow-sm px-4 mb-4"
style="vertical-align:middle">
<span>
<small class="text-uppercase font-weight-bold"> Nav-bar Toggle</small>
</span>
</button>
<% end %>
路线/rb
require 'sidekiq/web'
Rails.application.routes.draw do
resources :messages
resources :rooms
# Routing for budget section
resources :budgets do
resources :groups do
resources :categories
end
end
resources :posts do
resources :likes
resources :comments
end
resources :socials
resources :mentions, only: [:index]
resources :mentioned_posts, only: [:index]
resources :follows
resources :followers, only: [:index]
resources :followings, only: [:index]
resources :accounts
resources :goals
resources :retirements
get '/users', to: 'users#index'
get '/user/:id', to: 'users#show', as: 'user'
resources :calculate_debts
get '/privacy', to: 'home#privacy'
get '/terms', to: 'home#terms'
authenticate :user, lambda { |u| u.admin? } do
mount Sidekiq::Web => '/sidekiq'
end
resources :notifications, only: [:index]
resources :announcements, only: [:index]
devise_for :users, controllers: { omniauth_callbacks: "users/omniauth_callbacks" }
root to: 'home#index'
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
基于注释中提供的信息。show
路径需要一个id才能完成。你可以通过进行检查
current_page?(controller: 'rooms', action: 'show', id: room_id)
而不是
current_page?(controller: 'rooms', action: 'show')
如果您想对照特定的房间id进行检查,您可以使用
current_page?(controller: 'rooms', action: 'show', id: room_id)
如果您只想检查控制器和操作,而不考虑房间id,则必须使用另一种策略。你可以使用,
if params[:controller] == :rooms && params[:action] == :show
或与正则表达式匹配
if request.fullpath =~ //rooms/d+/