rails post request

HRÓ*_*LFR 3 ruby ruby-on-rails http-post

我不太了解如何在rails中处理请求,在我的控制器中,我有这样的事情:

def method_to_handle_request
  # do stuff
end
Run Code Online (Sandbox Code Playgroud)

然后在视图中我有这个JavaScript:

$.post("/", {method_to_handle_request: "value"}, function(data) {
  // do something with data
});
Run Code Online (Sandbox Code Playgroud)

这是错误的:data在JavaScript中最终只是作为页面.因此,我的问题是:如何处理rails中的请求?我一直在阅读"使用Rails进行敏捷Web开发",而那里的部分对我来说并没有多大意义.谢谢

jay*_*del 5

Rails使用配置的路由指向适当的控制器操作.您必须在config/routes.rb文件中指定路由,以通过所需操作发送请求.在您的控制器中,您已定义method_to_handle_request.您必须确保为此定义路线.在routes.rb文件中有很多方法可以做到这一点,本指南中有很多文档.

然后在您的method_to_handle_request中,您应该将输出呈现/格式化为JSON或XML或您希望视图使用的任何内容.如果你不这样做,你最终只会得到平坦的模板化HTML.这是一个很好的资源,用于渲染具有特定JSON部分的视图.

所以这是我的意思的一个简单示例:

在config/routes.rb中

resources :foos do
  member do
    post 'do_my_foo'
  end
end
Run Code Online (Sandbox Code Playgroud)

在foos_controller.rb中

def do_my_foo
  foo = Foo.find(params[:id])
  # do some things to poor ole foo
  some_cool_data_about_foo = ...

  respond_to do |format|
    format.json { render :json => some_cool_data_about_foo }
  end
end
Run Code Online (Sandbox Code Playgroud)

然后,当您使用ajax调用它时,您将在处理程序中获取JSONified数据.

吉泽,我希望这就是你所要求的......