link_to是否在指定控制器时自动传递:id?

时间:2012-02-25 02:15:49

标签: ruby-on-rails ruby-on-rails-3

我有一个link_to代码

<%= link_to "#{(pages_counter/2) + 1}", { controller: "videos", action: 'videos_navigate', offset: pages_counter }, remote: true %>

当点击链接时,它会自动传递视频的ID,这意味着我没有通过link_to代码明确传递视频对象或id。这是否发生是因为我直接识别了控制器和上面代码中看到的操作?提前致谢

生成的示例网址:/ videos / videos_navigate / 1?offset = 2

2 个答案:

答案 0 :(得分:2)

如果您在显示页面上,ID已在URL中,并且您的link_to未指定ID,则它将从URL中获取ID。如果你没有指定控制器,它会发生同样的事情,它会抓住你所在的当前控制器。

因此,如果你去录制2并点击相同的链接,你的网址将是/ videos / videos_navigate / 2?offset = 2

答案 1 :(得分:0)

为什么不直接链接到路线。如同在控制台中运行rake routes int一样,它应该打印出videos_navigate路径的路径名...然后你可能会像这样链接到它:

<%= link_to "#{(pages_counter/2) + 1}", videos_navigate_path, :remote => true %>

如果它还没有路径,那么您可以通过将:as => 'videos_navigate'添加到您的config.routes.rb文件中的操作的路由声明中来给它一个。 Read here for more information on routing and paths