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

标签 ruby-on-rails

在我的 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/

相关文章:

mysql - 在 mongodb 中存储大整数

ruby-on-rails - 我可以同时安装 Ruby on Rails 2.x 和 Ruby on Rails 3 吗

ruby-on-rails - Active Record - 查找和更新(仅当对象存在时)

ruby-on-rails - 如何从 Rails 应用程序调用 Apple App Store 服务器?

ruby-on-rails - rails : local server handling SSL

ruby-on-rails - 在 link_to 中传递参数

ruby-on-rails - Ruby .where 查看数组是否包含与查询不匹配的结果。

ruby-on-rails - 可以在 Ruby on Rails 中只注释一个模型吗?

ruby-on-rails - 更新到 Rails 3.1.10 时出现冲突

ruby-on-rails - 遏制 gem 未在 linux redhat 中安装