Ruby on Rails link_to指向Index而不是Show

时间:2011-12-10 23:03:32

标签: ruby-on-rails ruby link-to

我遇到一些Ruby on Rails代码的问题。我有嵌套资源的数据结构(List has_many Tasks和Task belongs_to List)。在我的List.show页面上,我有以下代码行:

<td><%= link_to 'Show Task', list_tasks_path(@list, task) %></td>

这个想法是这个页面将链接到一个“显示”页面,在那里我可以查看单个任务的详细信息。我希望网址基本上是

/lists/:list_id/tasks/:task_id

问题是上面的代码指示我

/lists/:list_id/tasks.task_id

在Task的索引页面上。我如何告诉Rails将我发送到演出页面呢?

我尝试过添加:action =&gt; show和:controller =&gt;任务,以及使用show_list_tasks_path(@ list,task)。我也知道结构本身就存在,因为如果我手动输入/ lists /:list_id / tasks /:task_id,我的展示页面工作正常。

感谢任何帮助。谢谢!

-sum

2 个答案:

答案 0 :(得分:2)

此处的问题是,当您使用list_tasks_path时,您正在使用list_task_path

如您所知,list_tasks_path方法将生成index操作的URL,并将第二个参数作为此请求的格式。

有关详细信息,请阅读Routing Guide

答案 1 :(得分:2)

指定此网址的更简单方法是

<%= link_to 'Show Task', [@list, task] %>

您也可以执行list_task_path(@list, task)(注意任务而不是任务)。

运行rake routes以查看为您的路线生成的确切名称。