局部

2011-05-27 67 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