我有一个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
答案 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