发布后的Ruby on Rails路由错误

Mex*_*reg 0 json ruby-on-rails ionic3

我尝试从Ruby返回json时遇到问题。

这是我的控制器(parts_controller)。

    def show()
    @part = Part.find(params[:id])
    unless @part.nil?
        render json: @part
    end       
end
Run Code Online (Sandbox Code Playgroud)

我的路由文件:

Rails.application.routes.draw do

  root to: "home#index"
  resources :parts


end
Run Code Online (Sandbox Code Playgroud)

这是我从爱奥尼克(Ionic)获得的帖子方法。

postData()
{

  let headers = new Headers();
  headers.append('Content-Type', 'application/json');

    let body = {
   id: 1
  };

    this.http.post('http://localhost:3000/parts/1', JSON.stringify(body), {headers: headers})
    .map(res => res.json())
    .subscribe(data =>{
        console.log(data);
   });          
}
Run Code Online (Sandbox Code Playgroud)

如果我手动输入http:// localhost / 3000 / parts / 1,它将返回JSON,但是当我尝试通过邮寄方式获取它时,它会抛出:POST http:// localhost:3000 / parts / 1 404(Not找到)

我也有show和index方法的视图,谢谢您的宝贵时间。

kha*_*maa 5

如何修复

this.http.get('http://localhost:3000/parts/1', {headers: headers})
    .map(res => res.json())
    .subscribe(data =>{
        console.log(data);
   }); 
Run Code Online (Sandbox Code Playgroud)

为什么?

因为显示应该具有GET not POST方法。POST用于将数据发送(POST)到后端,而不是获取数据。

如果您使用耙式路线或铁轨路线,则会找到正确的路径,以及可以用于每个动作的方法。