- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我是一名优秀的程序员,十分优秀!