HTTP:如何提交响应并同时检索下一个表单?

时间:2014-07-10 21:34:59

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

我正在尝试使用Ruby on Rails构建一个向用户提出问题的网站(比如第1页)。在用户提交问题的答案后,他转到第2页。我想记录他的回复,检查我的数据库是否正确,我想提供反馈,并在同一页面上提出下一个问题(第2页)。

我想在概念上理解我该怎么做才能做到。我什么时候使用HTTP GET和POST?

2 个答案:

答案 0 :(得分:1)

数据持久性

  

我想记录他的回复,请查看我的数据库   正确性,我想提供反馈,并提出下一个   问题在同一页面上(第2页)

这可能会使用session based model来实现 - 其中问题响应是按顺序创建的:

#app/models/form_response.rb
class FormResponse
  def initialize(session)
    @session = session
    @session[:form_response] ||= []
  end

  def process_response(response)
    #response here
  end

  ...
end

这将允许您存储响应,并随时间进行评估。这里有一个很棒的Railscast

enter image description here

POST / GET请求而言,我很想使用POST,因为这将使您的应用程序保持模块化(参数不存储在URL等中)

这样做的方法如下:

#config/routes.rb
resources :controller do
   collection do
      post :page1
      post :page2
      post :summary
   end
end

#app/controllers/your_controller.rb
Class YourController < ApplicationController
    def page1 
        @form = FormResponse.new(session)
        render :page2
    end
end

-

<强>的Ajax

您可能还想将ajax用于此

Ajax能够通过JS向您的应用程序发送异步请求。实际上,Ajax实际上代表Aysnchronous Javascript and XML,这意味着您需要能够使用它向控制器发送隐藏请求,并根据需要处理响应

您最多可以将此用于UX(用户能够保持在同一页面上编辑其响应的能力)。如果你想要我可以详细介绍一下

答案 1 :(得分:0)

这听起来更像是一个关于HTTP的一般问题,而不是Ruby on Rails,所以我会这样接近它。在高级别,HTTP交换将看起来像这样:

  1. 用户/浏览器向您的服务器发送HTTP请求并等待响应。例如,这可以是GET或POST请求。
  2. 您的服务器将处理该请求(例如,在您的情况下使用Rails)并将HTTP响应发送回用户。响应将包含状态代码和可选正文。
  3. 用户/浏览器接收响应并对其进行处理。响应主体通常是网页的HTML标记,在这种情况下,它将在浏览器中呈现。该页面可能包含用户可以单击或提交的链接或表单,然后将我们带回到第1步。
  4. 我建议您阅读有关HTTP协议的更多信息(例如Wikipedia