【问题标题】:button_to with GET method option in Rails在 Rails 中使用 GET 方法选项的 button_to
【发布时间】:2011-12-30 21:57:42
【问题描述】:

我有以下按钮,我将其覆盖以生成 GET 请求:

= button_to "Tutor", {:controller => "appointments", :action => "new",
    :listing_id => @listing.id} , :method => :get

但是,我仍然收到带有额外参数的 POST 请求:方法:

  Processing by AppointmentsController#new as HTML
  Parameters: {"authenticity_token"=>"AWkL", "listing_id"=>"2", "method"=>"get"}

我的路线文件,我有:

 resources :appointments

我做错了什么?

谢谢。

【问题讨论】:

    标签: ruby-on-rails routing routes


    【解决方案1】:

    只需使用 method: 和 :get

    button_to "New User", new_user_path, method: :get
    

    【讨论】:

    • 他就是这么用的,不是吗?
    • 如果您有一些 html 选项,请记住将所有内容包装在哈希中:button_to "New User", new_user_path, {method: 'get', class: "some-class"}
    • 或者如果您需要使用路径哈希,请确保从中分离出methodbutton_to "Frob User", {action: :frob, id: user.id}, method: :get
    【解决方案2】:

    按钮不应该发送GET 请求。

    您应该改用link_to。如果您希望它看起来像一个按钮,请应用一些 CSS。这是一篇好文章:http://coding.smashingmagazine.com/2009/11/18/designing-css-buttons-techniques-and-resources/

    【讨论】:

    • 搜索按钮呢?他们经常使用GET 请求。
    • 这不能回答问题。当有人问:“我该怎么做 X?”它改变了回答的主题,“你不应该做 X,而应该做 Y。”
    • @LukeLaupheimer:有时(实际上经常如此)这是一个有效的答案。在这种情况下可能不是。
    • 对这些“自以为是”的答案感到非常恼火。我知道这是一个古老的问题,但我刚刚上火车。我要下车。在我的情况下,我添加了一个 oauth“连接...”按钮。使用 GET 方法是有意义的,因为这就是发送请求的方式。是的,我可以不遗余力地添加css并使用link_to,但是为什么我必须因为别人的意见而做所有额外的工作呢?这简直是​​天方夜谭。
    • @VictorUde:无论如何你都会设计它,所以我看不出有什么不同。
    【解决方案3】:

    你可能想看看UJS driver code

    a\[data-method\] 是这里使用的选择器:

    所以以下应该可以工作(无法真正测试):

    button_to "Tutor", {...}, :html => { "data-method" => "get" }
    

    【讨论】:

    • 感谢 Tigraine。你的解决方案对我不起作用。我怀疑 Prototype(我已删除)与 jQuery 之间可能存在冲突,这使我无法强制使用 get 方法。
    • 啊抱歉..我只是查看了 UJS 代码并认为这应该可以工作.. 至少如果您使用 <a> 标记它应该
    【解决方案4】:

    您也可以使用带有按钮标签的链接。

    link_to(new_appointments_path(listing.id)) { button_tag("My button", class: 'my-btn-class') }

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2012-11-06
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多