ruby-on-rails – Rails:如何获取应用程序布局的applcation控制器变量

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails:如何获取应用程序布局的applcation控制器变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在应用程序控制器中获取一个变量集,以鼓励应用程序布局.

如果我使用:

@var = 'foo'

…应用程序布局不知道我在说什么

如果我使用全局变量

$var = 'foo'

…应用程序布局工作.但是,我的功能测试不行:

# application layout
# my var is an AR object
$var.name

# Stock functional test
class HomeControllerTest < ActionController::TestCase
  test "should get index" do
    get :index
    assert_response :success
  end
end

# test:functionals 
ActionView::Template::Error: undefined method `name' for nil:NilClass

我需要这个var可用于应用程序布局(每页).思考?我需要使这个会话var吗?

更新

根据我正在阅读的其他几个帖子,最好将它们放在应用程序助手中,然后从布局中调用它们?

# Application helper
def get_var
   Product.first
end

# Application layout
<% @var = get_var %>
<!DOCTYPE html>
<html lang="en">
<head>
...

这a)在我的浏览器中工作,b)通过测试.这是最好的做法吗有更简单/更好的方法吗?

解决方法

您是否尝试过before_filter声明变量的方法,以确保每个其他控制器调用它,并将该变量传递给相应的视图?

class ApplicationController < ActionController::Base

before_filter :foo_function

def foo_function
@var = “foo”
end

end

如果@var是AR对象而不是字符串,那么您确定模型名称和列名称是否正确定义?

猜你在找的Ruby相关文章