【问题标题】:Multiple :locals to a :partial being ignored多个 :locals 到一个 :partial 被忽略
【发布时间】:2011-10-05 19:24:43
【问题描述】:

我不明白为什么我不能在我的部分中使用额外的本地。

在我的父母看来:

<%= render :partial => 'content', :locals => { :post => post, :summary => true } %> 

在我的部分:

<%= summary ? post_content(post, 220) : post_content(post) %>

导致错误,找不到变量摘要:

undefined method `summary?' for #<#<Class:0x007ff425e773b0>:0x007ff425e67a50>

有什么想法吗?我可能在这里真的很愚蠢......!

【问题讨论】:

    标签: ruby-on-rails partial-views


    【解决方案1】:

    我认为您必须使测试表达式更明确,因为系统正在尝试找到一种称为summary的方法?而不是使用?作为三元运算符。尝试将其更改为:

    <%= summary == true ? post_content(post, 220) : post_content(post) %>
    

    【讨论】:

    • 这行得通 - 谢谢。你知道为什么要总结吗?或者总结没有用?我想如果它是一个布尔值...(这里是菜鸟。:-))
    • 不,真假值没有?操作员。
    • 啊,我知道我在想什么——对象上的布尔值。 :-)
    【解决方案2】:

    您能否确认您的部分确实有summary &lt;space&gt; ? 而不是summary?

    【讨论】:

    • 一个简单的问题。如果没有空格,是否会使整行代码不正确?我的意思是,如果他说summary? post_content(post, 22) : post_content(post) 到底是什么意思?在这种情况下,冒号是有效的运算符吗?
    • 正如 Gonzalo Quero 所说,“总结?”是函数的名称(例如 myvar.is_a? 字符串,其中 is_a? 是方法名称)。相反,x ? y : z 使用三元运算符?一个条件。
    • 我都试过了 和 但都没有用,但是 做了。我想既然 summary 是一个布尔值,我可以添加一个 ?之后...我是菜鸟。 :-)
    • @blackbird07:他正在向那个部分传递一个布尔值。真的没有?运营商就可以了。
    【解决方案3】:

    仔细阅读错误信息...它说找不到方法summary?,而不是summary。您的代码是否可能在摘要和问号之间不包含空格?

    【讨论】:

      【解决方案4】:

      确保您的模型具有summary 属性或方法。

      【讨论】:

      • 我不确定我是否理解这一点--:summary 只是部分用于引用传入参数的名称,true 是该参数的值。这里没有任何东西将它与模型联系起来,不是吗?我是在问,不是在断言 :) 哦,那不是我的 -1
      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 2016-12-24
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      相关资源
      最近更新 更多