Rails嵌套路由与link_to

时间:2017-04-26 13:08:25

标签: ruby-on-rails ruby ruby-on-rails-4

我正在尝试从我的视图中使用link_to到嵌套路由,我确信我的语法不正确。我的应用程序的基本流程是有一个摘要,有许多源,然后有许多日志行。这是一份非常基本的报告

我的路线是

    resources :perfsums, :only => [:index] do
    resources :perffeedresults, :only => [:index] do
          resources :loglines, :only => [:index] do
          end
    end
  end

以下是rake路线查找

的方式
perfsum_perffeedresult_loglines_path    GET     /perfsums/:perfsum_id/perffeedresults/:perffeedresult_id/loglines(.:format)     loglines#index 

在我看来,我有一个链接,我希望使用Feed ID从Feed类链接到日志行。应该很简单。我的链接看起来像这样

  <td> <%= link_to c.id, perfsum_perffeedresult_loglines(c) %> </td>

直接手动浏览页面,如下面的链接所示,我无法通过链接到达

http://localhost:3000/perfsums/19/perffeedresults/143/loglines

当我尝试使用该link_to运行时,我得到了。我尝试了一些不同的选项,但没有一个有效。

undefined method `perfsum_perffeedresult_loglines' for #<#<Class:0x007fad31b60dd8>:0x007fad386d86b0>

我确实使用link_to从摘要转到Feed页面,只是因为我认为更多的嵌套操作会让我失望。

1 个答案:

答案 0 :(得分:1)

首先,它是perfsum_perffeedresult_loglines_path,你错过了_path,应该添加它来获取路径。你需要传递两个参数,看看路径:

/perfsums/:perfsum_id/perffeedresults/:perffeedresult_id/loglines

您需要传递perfsumperffeedresult

<td> <%= link_to c.id, perfsum_perffeedresult_loglines_path(perfsum, perffeedresult) %> </td>