使用非current_page时遇到问题?隐藏按钮



我试图在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+/

最新更新