Визуализация отдельного элемента и коллекции элементов в представлении

Как я могу отобразить сведения о задаче одинаковым образом (используя часть _task), независимо от того, использует ли представление @project.tasks (т.е. несколько) или только @task (т.е. индивидуальную задачу)?

Мой вопрос похож на этот: -коллекция">Как заставить рубиновую функцию принимать либо отдельный элемент, либо набор элементов и делать то же самое?

Я попытался проверить if @project.tasks.is_a?, но он пожаловался на wrong number of arguments (0 for 1).

Любые идеи?


person user1116573    schedule 24.02.2012    source источник


Ответы (2)


Я не уверен, что вы хотите, но я понял, что вы хотите частично отобразить любую коллекцию для отдельного элемента. Так что, если я прав, вы должны выполнить эти шаги, и все будет работать из коробки. Допустим, у вас есть модель Project и она has_many Tasks, шаги таковы:

  1. Переименуйте часть задачи в tasks/_task.html.erb.
  2. Используйте визуализацию в поле зрения (например, projects/show.html.erb) следующим образом: <%= render @project.tasks %>
  3. Вы также можете использовать визуализацию следующим образом: <%= render @task %>

Примечание: решение работает для Rails >= 3.

person ka8725    schedule 24.02.2012

Если вы хотите проверить, является ли объект массивом или не используйте if @project.tasks.is_a?(Array)

person mohamagdy    schedule 24.02.2012