在视图中渲染单个项目和项目集合

时间:2012-02-24 21:31:35

标签: ruby-on-rails view arguments enumerable

如何以相同的方式显示任务的详细信息(使用我的_task部分),无论视图是使用@project.tasks(即多个)还是仅使用@task(即单个任务)?< / p>

我的问题与此类似:How can you make a ruby function accept either an individual item or collection of items and do the same thing?

我尝试检查if @project.tasks.is_a?,但它抱怨wrong number of arguments (0 for 1)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不确定你想要什么,但我知道你想要在个别项目上呈现部分集合。所以,如果我对,你应该遵循这些步骤,一切都将开箱即用。假设您有模型Projecthas_many Tasks,步骤如下:

  1. 将您的任务部分重命名为tasks/_task.html.erb
  2. 在视图中使用(例如projects/show.html.erb),如下所示:<%= render @project.tasks %>
  3. 您还可以使用这样的渲染:<%= render @task %>
  4. 注意:解决方案适用于Rails >= 3

答案 1 :(得分:0)

如果要检查对象是否为数组,请使用if @project.tasks.is_a?(Array)