【问题标题】:Default route only for [POST] - Ruby on Rails 3.2仅适用于 [POST] 的默认路由 - Ruby on Rails 3.2
【发布时间】:2013-01-10 11:45:49
【问题描述】:

在我的网站上为 PayPal 指定返回 URL 时,我收到以下错误:

没有路由匹配 [POST] "/"

我想为POST 方法指定一个默认路由。

如何使默认的'root' 路由也接受POST 请求? 我可以为POSTGET 请求指定单独的'root' 路由吗?

我的路线目前是这样的:

root GET / refinery/pages#home

顺便说一句,我正在使用 Refinery CMS

【问题讨论】:

  • 我的 routes.rb 文件如下所示: mount Refinery::Core::Engine, :at => '/' 我希望将其保留为一个通用问题,而不是在此处粘贴 124 行精炼厂安装在/是否可以以通用方式匹配根 POST 请求?

标签: ruby-on-rails paypal ruby-on-rails-3.2 refinerycms


【解决方案1】:

我认为root 一个GET 请求,它“想要”指定应用程序在仅由域名(或引擎)。

你可以尝试使用一个

match "/", :via => :post ...

但是如果您允许返回问题:您为什么坚持 PayPal 应该发布到您的根 URL?您应该可以在那里指定任意 URL,只需定义一个

match "postback" => "...", :via => :post

一切都会好起来的。

顺便说一句:sanny Sin 要求你发布 rake routes 命令的输出,在你的命令行中输入它(并且很可能省略炼油厂路线 :-)

【讨论】:

  • 这有效:匹配 "/" => "refinery/pages#home", :via => :post
【解决方案2】:

最后对我有用的是match 加上redirect

match "/" => redirect("/"), :via => :post

这会将POST 请求转换为/GET 请求。否则,请求会转到正确的路由,但它仍然是 POST 请求,这使得我的会话未加载。我仍然不确定为什么对/POST 请求没有加载我在转到PayPal 并返回之前的原始会话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 2017-05-11
    • 2014-07-23
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多