1

showアクションには、次の定義を必要とするロジックがあります。

@object.nested_object.new (or @object.nested_object.build or @object.nested_object.create)

ただし、次のようなものを使用して、nested_objectsのリストを表示するときが来ました。

@object.nested_objects.each do |nested_objects|
  #display
end

@object.nested_object.newで作成された一時的なネストされたオブジェクト用の追加の広告申込情報があります。

実際のnested_objectsのリストを表示する前に、その一時オブジェクトを強制的に削除する方法はありますか?

または、次のことを達成する別の方法はありますか?

-creating a temporary nested_object for logic tests
-showing a list of nested_objects

私は次のようなものを試しました:

temp_nested_object = @object.nested_object.new
temp_nested_object.delete

しかし、成功しませんでした。

御時間ありがとうございます!

更新:私はこれを達成しようとしています:

<% if can? :create, @project.tasks.build %>

ここから: https ://github.com/ryanb/cancan/wiki/Nested-Resources これを達成する他の方法を見つけようとしまし た: https : //github.com/ryanb/cancan/issues/608ビューで回避する必要があります。

4

2 に答える 2

2

createまず、一時的なオブジェクトであってはなりません。

前のアドバイスに従う場合は、次のようにしてください。

@object.nested_objects.select(&:persisted?).each do |nested_objects|
  #display
end

これにより、データベースからオブジェクトがフィルタリングされます(一時オブジェクトを削除する必要はありません。リクエストの最後に表示されなくなります)。

于 2012-05-21T19:33:44.877 に答える
1

1つの可能性は、次の方法でコレクションから削除することです。

# Remove last object in collection
@object.nested_objects.pop
于 2012-05-21T19:53:24.600 に答える