ruby-on-rails - rails 发布请求

标签 ruby-on-rails ruby http-post

我不太了解 Rails 中的请求是如何处理的,在我的 Controller 中,我有这样的东西:

def method_to_handle_request
  # do stuff
end

然后在 View 中我有这个 JavaScript:

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

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

最佳答案

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

然后在您的 method_to_handle_request 中,您应该将输出呈现/格式化为 JSON 或 XML 或您希望 View 使用的任何内容。如果你不这样做,你最终只会得到平面模板化的 HTML。这是一个 good resource用于渲染 View ,其中有一个特别是关于 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 调用它时,您将在处理程序中获得 JSON 化数据。

哎呀,我希望这就是你要问的......

关于ruby-on-rails - rails 发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7054174/

相关文章:

ruby-on-rails - Rails 在哪里存储通过在测试期间保存 activerecord 对象创建的数据?

javascript - 将javascript变量发送到rails?

ruby-on-rails - Capistrano 中的角色数组

php - 发布大量复选框

ruby-on-rails - ruby 注入(inject)方法没有做我认为应该做的事情

ruby-on-rails - 使用 Jekyll 未在主页上呈现的帖子

ruby - 为什么将哈希集更新为变量会更新该变量?

ruby - 为什么 ruby​​ 无法在我的 Fedora 20 机器上打开 TCPSocket?

java - REST Web服务不接收Android HttpPost参数

用于分块编码 POST 的 HTTP header - 错误 411