gpt4 book ai didi

ruby-on-rails - 当前 Controller 路径,无需在 rails 中指定操作

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:48 25 4
gpt4 key购买 nike

我有一个 Rails 应用程序,它有 2 个菜单,其中菜单根据用户当前访问的页面而变化。有什么方法可以告诉 Rails 如果用户正在访问这个 Controller ,无论访问者是否在索引、编辑、创建、更新、删除方法上?

我目前正在使用这样的助手,它确实有点乱。

def which_page
current_page?(root_path) ||
current_page?(skate_movies_path) ||
current_page?(new_skate_photos_path(@user)) ||
current_page?(skate_photos_path) ||
current_page?(skate_tricks_path)
end

在我看来是部分的

 <% if which_page %>    
<%= default_menu %> #upload, #photos, #trick-tips, #goals
<% else %>
<%= skate_menu %> #dashboard, #shared-videos, #profile
<% end %>

问题是这行得通,但在整个应用程序中,我总能找到一两个页面给我一个路由错误。有什么方法可以在不指定任何操作的情况下告诉用户正在使用哪个 Controller 和操作?

最佳答案

您可以在 ApplicationController 中定义一个 before_filter 并将其命名为 set_menu

class ApplicationController < ActionController::Base
before_filter :set_menu

protected

def set_menu
@menu = 'default'
end

end

然后在每个您想要显示不同菜单的 Controller 中,您将覆盖 set_menu,例如:

class SkateMoviesController < ApplicationController

protected

def set_menu
@menu = 'skate'
end

end

您可以使用 set_menu 中的辅助方法 action_name 来访问 Controller 中的当前操作。

那么在你看来:

<% if @menu == 'default' %>
<%= default_menu %>
<% else %>
<%= skate_menu %>
<% end %>

关于ruby-on-rails - 当前 Controller 路径,无需在 rails 中指定操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14037552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com