我想知道如何将一个对象传递给一个部分,然后又传递给另一个部分? 我跟随迈克尔哈特尔书,这是一个可选的练习,但我已经超级卡住了。
如果我有...
<%= form_for(@user) do |f| %>
<%= render 'fields', object: f.object %>
<% end %>
从书中说,它使用的哈希值等于对象,键等于我们想要的部分变量的名称。所以这意味着_fields.html.erb中的关键对象&#39;应该存在,它应该具有f.object
的值<%= render 'shared/error_messages', object: ?????? %>
<%= object.label :name %>
<%= object.text_field :name %>
<%= object.label :email %>
<%= object.text_field :email %>
但是当我尝试检索密钥时,我在行上出现错误
<%= object.label :name %>
它说
undefined method `label' for #<User:0x007f86000110c0>
为什么抛出这个?我以为我可以将密钥称为&#39; object&#39;。
另外,我一直坚持要取代??????用。为了复制上面的错误,我拿出了??????但它会从下一个部分说法&#39;对象&#39;中引发另一个错误。未定义。我不能使用像f.object这样的东西,因为f不再存在。如何才能将值传递给下一个部分?
非常感谢=)
答案 0 :(得分:2)
嗯,你传递的是object: f.object
,f.object
是User
。因此,您尝试拨打object.label
,但User
没有label
方法。如果您传入object: f.object, f: f
,那么在您的部分内容中,您可以拨打f.label
。