我遇到一些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
答案 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
以查看为您的路线生成的确切名称。