Rails 带有可选变量的部分不工作

Rails partial with optional variable not working

我不确定这里发生了什么,但以下会在渲染时引发错误:

<%= render 'clients/clients_table', special: true %> 

在我的部分我有:

<% if defined?(:special) %>
    <p><%= special %></p> <!-- line with error -->
<% else %>
    <p>No</p>
<% end -%>

这会抛出错误:

undefined local variable or method `special' for #<#<Class:0x007fa20fbb0310>:0x007fa20cb986a0>

当我尝试显示 local_assigns.has_key?(:special) 时,它也显示 false。知道发生了什么事吗?

我总是建议在 locals: 键下而不是直接发送变量。也许试试这个:

<%= render 'clients/clients_table', locals: {special: true} %> 

同样在你的部分,这个 defined?(:special) 是不正确的,因为它永远是真实的

defined?(:special)
#=> "expression" 

而是使用 local_assigns 例如

<% if local_assigns[:special] %>

defined?(:special) 检查是否定义了 符号 :special。一直都是。

您想检查 变量 special 是否已定义:defined?(special)