gpt4 book ai didi

ruby-on-rails-3 - RoR 使变量可用于 application.html.erb,以便它出现在 header 的所有 View 中

转载 作者:行者123 更新时间:2023-12-03 00:46:19 24 4
gpt4 key购买 nike

我想在 application.html.erb 中访问一个变量,以便所有 View 都可以使用它。我知道我可以进去并将其添加到每个 Controller 并将其添加到每个功能,以便它可用于索引、显示等。但是,这太疯狂了。如果我希望它位于 header 中,我应该能够在 application.html.erb 文件中访问它,以便它出现在我的所有 View 中。我的一个 Controller 的示例,它正在其中工作......

     def index
if session[:car_info_id]
@current_car_name = current_car.name
end

respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @miles }
end
end

这是我在应用程序 Controller 中的函数:

  private   

def current_car
CarInfo.find(session[:car_info_id])
end

如果我尝试将 @current_car_name = current_car.name 添加到我的 applicationcontroller 中,以便该变量可用于我的 application.html.erb,则会出现路由到 current_car 错误。我知道该函数可以工作,因为如果我在不同的 Controller 中调用它,它可以正常工作,并且我可以访问该索引 View 或其他内容中生成的变量。只需知道如何调用该函数一次并使所有 View 都可以访问该变量,因为它将位于我的 header 中。我可以将信息放入 session 变量中,但我在某处读到,您应该将 session 变量限制为 ids,并从这些 ids 生成其他所需的信息。

提前致谢,

最佳答案

只需将这样的一行添加到您的 application_controller.rb 文件中,您就可以在 View 中访问 current_car

helper_method :current_car

如果您确实想要一个实例变量,您可以在应用程序中放置一个 before_filter ,如下所示。然后您的 Controller 和 View 都可以访问 @current_car 变量。

class ApplicationController < ActionController::Base
before_filter :get_current_car
def get_current_car
@current_car = CarInfo.find(session[:car_info_id])
end
end

关于ruby-on-rails-3 - RoR 使变量可用于 application.html.erb,以便它出现在 header 的所有 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920897/

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