"inquiries#new" 所以当我去 /contact在浏览器中,它调用 InquiriesController的ne-6ren">
gpt4 book ai didi

ruby-on-rails - Rails 将 "action"呈现为自定义 url

转载 作者:行者123 更新时间:2023-12-03 18:13:02 24 4
gpt4 key购买 nike

在我的 routes.rb我有以下内容:

get "contact" => "inquiries#new"

所以当我去 /contact在浏览器中,它调用 InquiriesControllernew行动。

现在,当我尝试调用 render "new"InquiriesController 内部的创建操作中:
def create

render "new"
end

浏览器中生成的 url 为 /inquiries .

除了调用 redirect_to还有什么办法吗?至 render "new"但网址为 /contact在浏览器中?

最佳答案

简短的回答是否定的。原因如下:
render不同于 redirect_to .当你写 redirect_to :action ,您正在发起一个全新的浏览器请求。 Rails 堆栈被命中,再次搜索路由并执行相应的操作。它与在地址栏中输入 url 并按 enter 完全相同。

另一方面,当您使用 render ,您正在告诉当前请求使用哪个 View 。因此,地址栏中的地址通常是您正在调用的操作 render .那是因为你输入了一个地址,然后你告诉 rails 在同一个请求中显示不同的页面。

简而言之,而 redirect_to开始一个全新的请求周期,render只需将默认 View 替换为您在同一请求周期中选择的 View 。

因此,如果您希望更改地址栏,则必须向所需地址发起新请求。可以通过手动输入地址、单击指向该地址的链接或从 Rails 重定向到该地址。

希望这可以帮助。

关于ruby-on-rails - Rails 将 "action"呈现为自定义 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com