如果使用simple_form和HAML表单中的语句,则为Rails

时间:2014-08-06 00:13:20

标签: ruby-on-rails ruby haml simple-form

我在表单中有以下代码,它自动将对象的位置放入输入,使用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?

没有成功

寻找一种干净的方法来实现这一目标,请提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您使用了或声明。 ||是或{,&&是和。此外,如果last.position.present?不存在,您还需要检查last是否无效。

尝试if @collection_page.new_record? && Spree::CollectionPage.last.present?