rails post request

时间:2011-08-14 00:26:56

标签: ruby-on-rails ruby http-post

我不太了解如何在rails中处理请求,在我的控制器中,我有类似的东西:

def method_to_handle_request
  # do stuff
end

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

$.post("/", {method_to_handle_request: "value"}, function(data) {
  // do something with data
});

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

1 个答案:

答案 0 :(得分:5)

Rails使用已配置的路由指向相应的控制器操作。您必须在config / routes.rb文件中指定路由,以通过所需操作发送请求。在您的控制器中,您已定义method_to_handle_request。您必须确保为此定义路线。在routes.rb文件中有很多方法可以做到这一点,这些方法在this guide中有详细记录。

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

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

在config / routes.rb

resources :foos do
  member do
    post 'do_my_foo'
  end
end

在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

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

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