`
机器人
  • 浏览: 83434 次
  • 性别: Icon_minigender_2
  • 来自: Google
社区版块
存档分类
最新评论

Rails关于判断request请求类型的一个bug

阅读更多
def ajax_test
    if request.xhr?
     render :update do |page|
        page.alert("xhr");
      end
    elsif request.post?
     render :update do |page|
        page.alert("post");
      end
    end
end

页面上是表单发送一个ajax请求:
<% form_remote_tag :url => {:action => "ajax_test", :id => @user }, :before => "$('submit_btn').disable();$('loading').show()"  do %>
<% end %>

测试结果是弹出xhr,很正确!不过....
def ajax_test
    if request.post?
     render :update do |page|
        page.alert("post");
      end
    elsif request.xhr?
     render :update do |page|
        page.alert("xhr");
      end
    end
end

测试的结果是post。

bug吧。。

我的rails版本是rails 2.0.2 (都有点不好意思拿出来了... )

你们看一下新版本会有这个bug吗?
分享到:
评论
2 楼 vwangzhen 2009-10-16  
<%=  link_to_remote "post", {:url => { :action => "ajax_test"} ,:method=>:get  } %>
<%=  link_to_remote "get", {:url => { :action => "ajax_test" } ,:method=>:post } %>



  def ajax_test
    if request.xhr?
      render :update do |page|
        if request.post?
          page.alert("post");
        end
        if request.post?
          page.alert("get");
        end
      end
    end
  end
  
1 楼 Raecoo 2009-10-16  
佩服你直接质疑是Rails BUG的勇气, 但不得不告诉你, 这是你的问题.

 
  # Generates:
  #      <form action="/some/place" method="post" onsubmit="new Ajax.Request('',
  #      {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;">
  form_remote_tag :html => { :action =>
    url_for(:controller => "some", :action => "place") }

相关推荐

Global site tag (gtag.js) - Google Analytics