我在表单中有以下代码,它自动将对象的位置放入输入,使用if语句消除用户编辑时发生的这种情况。
- if @collection_page.new_record?
= f.input :position, :label => "Display order:", input_html: { value: Spree::CollectionPage.last.position + 1 }
- else
= f.input :position, :label => "Display order:"
当没有记录并创建第一个记录时我遇到了麻烦,我得到了通常的nil类错误。
undefined method `position' for nil:NilClass
这是有道理的,因为我还没有任何记录。
所以只需要在那里加一点逻辑。
我试过了:
- if @collection_page.new_record? || Spree::CollectionPage.last.position.present? # and @collection_page.last.position.present?
没有成功
寻找一种干净的方法来实现这一目标,请提前感谢您的帮助!
答案 0 :(得分:2)
您使用了或声明。 ||
是或{,&&
是和。此外,如果last.position.present?
不存在,您还需要检查last
是否无效。
尝试if @collection_page.new_record? && Spree::CollectionPage.last.present?