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

Jer*_*mas 2 ruby-on-rails partial-views

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

<%= render 'clients/clients_table', special: true %> 
Run Code Online (Sandbox Code Playgroud)

在我的部分中,我有:

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

这抛出错误:

undefined local variable or method `special' for #<#<Class:0x007fa20fbb0310>:0x007fa20cb986a0>
Run Code Online (Sandbox Code Playgroud)

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

eng*_*nky 6

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

<%= render 'clients/clients_table', locals: {special: true} %> 
Run Code Online (Sandbox Code Playgroud)

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

defined?(:special)
#=> "expression" 
Run Code Online (Sandbox Code Playgroud)

而是使用local_assigns例如

<% if local_assigns[:special] %>
Run Code Online (Sandbox Code Playgroud)