POST / GET与Ruby on Rails Root无法正常工作

时间:2014-09-15 19:07:30

标签: ruby-on-rails ruby

我正在使用RoR编写我的网站,我遇到了这个问题。

我的路线文件看起来像

  root to: "static#index"

  match '/index', to: 'static#index', via: [:get, :post]
  match '/download', to: 'static#download', via: [:get, :post]
  match '/terms', to: 'static#terms', via: 'get'
  match '/privacy', to: 'static#privacy', via: 'get'
  match '/jobs', to: 'static#jobs', via: 'get'
  match '/android', to: 'static#android', via: [:get, :post]
  match '/apply', to: 'static#apply', via: 'get'
  match '/faq', to: 'static#faq', via: 'get'

当我向https://www.website.com/发出GET请求时,会显示该页面。

但是,当我将POST请求预先形成到同一地址时,它会返回找不到的404页面。

我的公共目录中没有index.html。

那么为什么当这个POST请求与GET和POST匹配并且GET正常工作时,它返回404?

修改

我添加了这一行

match '/', to: 'static#index', via: [:get, :post] 

在我的根目录下面声明,但现在我的页面显示422错误而不是404

3 个答案:

答案 0 :(得分:1)

您的根网址是从您的示例处理https://www.website.com/的网址。指定时

root to: "static#index"

您已为/声明了一个GET路由,它映射到StaticController #index。您对https://www.website.com/发出的POST请求不由根路由处理,因此正确返回404。

我猜你想要POST请求转到/ index,/ download或/ android。您需要在URL中完全指定端点,以便正确路由请求。

答案 1 :(得分:1)

你可以试试这个:

post '/' => "static#index", as: "root"

Rails routes: resourcing from the root path "/"

答案 2 :(得分:0)

我的偏好和我认为最干净的实施方式是:

resources :static, :only => [:index, :create], :path => "/"