gpt4 book ai didi

ruby-on-rails - rails : How can I make an object available in all views?

转载 作者:行者123 更新时间:2023-12-01 19:34:13 25 4
gpt4 key购买 nike

我有一个 search 对象,该对象在我的画廊 Controller 中创建并显示在我的画廊 View 中:

app/controllers/gallery_controller.rb

class GalleriesController < ApplicationController
def index
@galleries = Gallery.all
@search = Search.new
end

该对象代表一个搜索栏。我想将搜索栏移动到我的 layouts/application.html.erb View 中,并使其在标题中的所有页面上可用。这需要我使 search 对象全局可用,但我不知道如何做到这一点。我尝试坚持使用 ApplicationController 并认为这将使其在所有 View 中可用,因为所有内容都是从那里继承的,但它不起作用。如何使对象在所有 View 中可用?

最佳答案

您可以使用 ApplicationController 中的 before_action (又名 before_filter)来完成此操作,您的所有 Controller 都应从中继承。

class ApplicationController < ActionController::Base
before_action :make_search

def make_search
@galleries = Gallery.all
@search = Search.new
end
end

这将使函数在每个操作之前运行。

如果需要,您可以使用 skip_before_action :make_search 在特定 Controller 中禁用它,或者使用 skip_before_action :make_search, only: :index 仅禁用它 Controller 的 index 操作。

如果您只想为几个 Controller 使用此功能,您可以在 ApplicationController 中定义 make_search,并将 before_action :make_search 放在您想要启用它的 Controller ...

关于ruby-on-rails - rails : How can I make an object available in all views?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720897/

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