我正在尝试在应用程序控制器中获取一个变量集,以鼓励应用程序布局.
如果我使用:
@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”
endend
如果@var是AR对象而不是字符串,那么您确定模型名称和列名称是否正确定义?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。