Ruby on rails 呈现期间控制器插入的URL前缀
我在链中有一些简单的控制器和视图,在链的末尾有静态html页面,因此: ControllerA->ControllerB->index.html 控制器A重定向到控制器B中的操作,然后该操作呈现html。 控制器C是第三个控制器,只能通过html中a href的链接访问 如果浏览器直接访问“myDomain.com/index.html”上的html页面,则会呈现基于引导的HTML5页面,其中的所有链接都能正常工作 但是,使用Rails链可以完美呈现html页面,但许多链接无法正常工作,因为GET中的URL以以下方式出错: ActionController::RoutingError(没有与[GET]匹配的路由“/controllerB/home/ControllerC/desiredAction”) 因此,问题是html页面中的所有链接都在呈现html的控制器的最后激活的操作路径之前。当然,不存在这样的路线 我相信,从以前的实验来看,重定向而不是渲染也会出现同样的问题 从控制器呈现的静态html页面链接中形成URL的影响因素是什么 routes.rb确实尝试路由操作(可能我误解了文档): 以及静态页面中的触发html:Ruby on rails 呈现期间控制器插入的URL前缀,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我在链中有一些简单的控制器和视图,在链的末尾有静态html页面,因此: ControllerA->ControllerB->index.html 控制器A重定向到控制器B中的操作,然后该操作呈现html。 控制器C是第三个控制器,只能通过html中a href的链接访问 如果浏览器直接访问“myDomain.com/index.html”上的html页面,则会呈现基于引导的HTML5页面,其中的所有链接都能正常工作 但是,使用Rails链可以完美呈现html页面,但许多链接无法正常工作,因为GE
<a href="controllerc/desiredAction" title="My title">
在静态html页面中,只需定义带有控制器、操作和id的链接,并将id的值设置为
nil
比如说
<%= link_to "Some Page", :controller => "your_destination_controller", :action => "your_action", :id => nil %>
“您的目的地控制器”,:action=>“您的操作”,:id=>nil%>
那么一切都会好起来的。如果仍然出现错误,请评论您的问题。答案是html中的引用链接应该指定绝对路径而不是相对路径:
# note: the path now begins with a '/', making it absolute
<a href="/controllerc/desiredAction" title="My title">
#注意:路径现在以“/”开头,使其成为绝对路径
以前,在没有“/”前缀的情况下,路径被视为相对于正在执行渲染的当前控制器操作。使用“/”前缀,路径的第一个组件现在是所需的目标控制器
这适用于使用控制器呈现html或通过浏览器直接访问html页面。当您使用rails控制器时,您需要在
routes.rb
文件中为该操作指定路径,即使您呈现的是静态页面。感谢您的编辑。您找到解决方案了吗这似乎是一个建议使用动态html(.erb)页面,而不是不了解控制器、操作和ID的静态html(.html)页面。无论是(.html)还是(.erb)该操作将评估嵌入的ruby并呈现模板。当从控制器B呈现页面时,这确实有效。对于大多数用户来说,这将是一个很好的解决方法,尽管它将Rails代码混合到一个纯html文件中。但是,当直接从浏览器访问建议的修复程序时,它会变成显示的文本,从而破坏页面。我们需要一个双向工作的解决方案,并且仍然希望理解(实际问题)为什么所有html URL都被呈现控制器的路径预先设置?
# note: the path now begins with a '/', making it absolute
<a href="/controllerc/desiredAction" title="My title">