我正在使用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
答案 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)
答案 2 :(得分:0)
我的偏好和我认为最干净的实施方式是:
resources :static, :only => [:index, :create], :path => "/"