局部

2011-05-27 69 views
0

越来越可变我见过的其他职位,但似乎无法找出为什么这不是为我工作局部

在我的控制器我在视图中设置

 
    @referrer=referrer.name 

我有

 
    <%= render 'js', :referrer => @referrer > 

然后在我的部分,我把

 
    var type =' <%= referrer >'; 

我得到一个响应'未定义的局部变量或方法'referrer',它指向_js文件。

从我所看到的,这正是它应该如何写,我做错了什么?

回答

2
<%= render :partial => "account", :locals => { :referrer => @referrer } %> 

您在部分中使用的变量需要通过:locals散列传递。

参考:http://api.rubyonrails.org/classes/ActionView/Partials.html

编辑

以下作品完美的我:

控制器:

def index 
    @referrer = "test" 
    end 

index.html.erb

<%= render :partial => "account", :locals => { :referrer => @referrer } %> 

_account.html.erb

<%=referrer%> 
+0

我很确定:partial和:locals已经被Rails3弃用了。 – pedalpete 2011-05-27 21:52:49

+0

据我所知并不如此。查看这个页面的partials部分:http://guides.rubyonrails.org/layouts_and_rendering.html“在以前的Rails版本中,默认的局部变量会寻找一个实例变量,其名称与父类中的部分名称相同。行为在2.3中被弃用,并在Rails 3.0中被删除。“ – Gazler 2011-05-27 21:54:01

+0

看起来你是对的,看这个文档也http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials,但显然这是不需要的。任何想法为什么我必须在我看来使用@referrer?我以为我会使用'referrer',如果你能解释一个,我会接受你的答案,因为这是我的难题。 – pedalpete 2011-05-27 23:24:20

0

原来的原因是在部分,我不得不打电话

 
    var type='<%= @referrer %>' 

不知道为什么所有的其他文件,我看到了它,而不@符号

+0

这有效,但推荐使用@Gazier推荐的'locals'哈希。 – raidfive 2011-05-27 23:59:06