注意:如果這是重複的道歉,我找不到答案。警告:新手到RoR,答案可能非常明顯。Ruby on Rails:將變量傳遞給可以是不同類的部分
我有一個部分,_show_address_on_map
,它顯示了一個人在地圖上的位置。但是,此人可以是@employee
或@client
,可以從employee_addresses控制器或client_addresses
控制器調用。取決於它們中的哪一個,在部分內需要改變一些事情。
在employee_addresses/show.html.erb
我稱之爲局部與
<%= render :partial => ".../show_on_map", currentUser: @employee %>
在client_addresses/show.html.erb
我稱之爲局部與
<%= render :partial => ".../show_on_map", currentUser: @client %>
現在在部分(_show_address_on_map
)我嘗試做currentUser if語句:
<% if currentUser.is_a?(Client) %>
#do something with @client
<% else %>
#do something with @employee
<% end %>
這給了我錯誤"undefined local variable or method 'currentUser'"
如何正確定義currentUser,以便它可以是@employee或@client所描述的?還是我在做其他事情?
又名'snake_case'。 – mmichael
感謝您注意駱駝套! – Teresa
只需添加到Ruslan的答案中,本地哈希的原因是爲模板分配「本地範圍」變量,因此您將永遠不會執行類似於{@current_user:@client}(無法分配給實例var)的內容。另外,值得注意的是,由於Rails對其渲染系統的限制,你不能使用某些方法來檢查諸如「defined?current_user」之類的變量,因爲這些傳遞給模板的本地變量被賦值爲「local_assigns」哈希值。相反,您必須檢查「local_assigns」散列。防爆。 「如果local_assigns.has_key?:current_user」。 – bkunzi01