2015-06-26 80 views
0

我有一个简单的任务。用户应该能够在一种形式进入宽度高度并单击窗体应生成请求(链接)等以下之后:
/find_area.json?width[]=:width&height[]=:height发送和处理.json请求(在Rails应用程序中)

应用应生成响应(面积=高度*宽度)并在页面上动态显示它。

所有的用户操作都被保存了,所以它应该是POST请求。

我的问题是:

  1. 如何创建这个请求(从简单的生成它的form_for)。
  2. 如何计算面积(我的意思是:))并给出回应。

对不起,缺少代码和信息。我会很高兴快速简单的回答。

+0

做你尝试过的东西?在url中显示链接...您需要使用GET请求而不使用ajax.But我的问题是,如果您的页面应该动态更新以及ajax提交和页面,那么您将如何在页面中显示网址...... – Milind

+1

为什么你需要一个用于宽度和高度参数的数组吗? –

+0

@Milind它必须是POST请求(为了保存用户操作)。 – MDD

回答

0

只为你需要什么用ajax做小总结: -

  1. 创建模式areamigrate表和form_for

    rails g model Area height:integer width:integer

    run rake db:migrate

    使用

    //view part <%= form_for(@area,:url=>"areas/find_area",:remote=>true) do |f |%> <%= f.text_field :width ,:placeholder=>"Enter width",:required=>"true"%> <%= f.text_field :height ,:placeholder=>"Enter height",:required=>"true"%>
    <button type="submit" data-remote="true"> Calculate Area</button>
    <%end%>

  2. routes.rb中添加路由处理张贴表格后提交使用AJAX

    match '/find_area', :to => 'areas#find_area'

  3. 控制器方法,得到PARAMS的值和计算面积

    //inside areas_controller.rb, def find_area width,height=params[:width],params[:height] @area=width*height respond_to do |format| if @area format.js else format.js { render :json => @area.errors.full_messages.join(' '), :status => 400 } end end end

  4. 渲染js.erb显示弹出有关该地区/文本以及使用CSS

    内find_area.js.erb隐藏表单

    ##using any hidden div already present on the page $("#show_area").html("The area is <%= @area%>").show();

相关问题