注意:如果这是重复的道歉,我无法找到答案。警告:RoR的新手,答案可能非常明显。
我有一个部分_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,如上所述?或者我做错了什么?
答案 0 :(得分:4)
<%= render :partial => ".../show_on_map", locals: {current_user: @client}%>
:)
同样作为ruby / rails惯例,使用under_score而不是camelCase
答案 1 :(得分:1)
您可以使用:object
将数据发送到partial,这将定义一个与partial
<%= render :partial => ".../show_on_map", :object => @client %>
因此,在您的部分内容中,您可以使用部分:object
的名称引用_show_address_on_map
发送,您可以执行以下操作:
<% if show_address_on_map.is_a?(Client) %>
#do something with @client
<% else %>
#do something with @employee
<% end %>
这将包含:object
中发送的@client,因此您可以控制部分中的操作。