我在rails中有一个部分名称测试,我在本地散列中发送一些数据,我需要检查本地散列中是否存在标题。
<%= render partial: "/test", :locals => {
:title => "sample title"
}
%>
我试过
locals.has_key? 'title',
但它不起作用。任何人都可以帮忙吗?
答案 0 :(得分:3)
我需要检查locals hash中是否存在title。
那么,你必须做local_assigns.has_key? :some_local
。
<% if local_assigns.has_key?(:some_local) %>
<%= some code here %>
<% end %>
我没有从Rails指南中获取文档,但我知道这个功能,这就是我在这里提到它的原因。但是,这里有一些关于15700和18970关于local_assigns
指南的讨论。
最后在@stefan的帮助下,我找到了方法local_assigns
的文档。
答案 1 :(得分:0)
您需要将标题写为string
,而不是symbol
<%= render partial: "/test", :locals => {"title" => "sample title" } %>
现在locals.has_key? "title"
将返回true
供参考,请参阅此SO
答案 2 :(得分:0)
你可以写
<%= render '/test', title: 'sample title' %>
在语言环境中执行此操作:
if defined?(title)
...
end
答案 3 :(得分:0)
这是因为'title'
和:title
是单独的键。您可以改为使用:title
或'title'.to_sym
。