【问题标题】:rails button_to type="button"rails button_to type="button"
【发布时间】:2016-04-05 16:23:16
【问题描述】:

基本上,我试图从 rails button_to 获取下拉按钮,这是通过 ajax 完成的,当有人单击该按钮时,它会通过 ajax 渲染显示渲染的购物车 <ul> 标签。

引导:

<button class="btn btn-primary dropdown-toggle" type = "button" data-toggle="dropdown"><span class="glyphicon glyphicon-shopping-cart"></span> <span class="badge"><%="#{@cart.line_items_count}" %></span></button>

rails button_to:

%= button_to navbar_cart_path, {remote :true, method: :get, :class => 'btn btn-primary dropdown-toggle', data_toggle: "dropdown"}  do %>
          <span class="glyphicon glyphicon-shopping-cart"></span>
          <span class="badge" id="cart-badge-id"><%="#{@cart.line_items_count}" %></span>
      <% end %>

这会生成类似的按钮标签,除了查看html源码时,bootstrap按钮有属性type="button",但是rails生成type="submit"

引导:

<button class="btn btn-primary dropdown-toggle" type = "button" data-toggle="dropdown"><span class="glyphicon glyphicon-shopping-cart"></span> <span class="badge">5</span></button>

导轨:

<form class="button_to" method="get" action="/navbar_cart data-remote="true">
  <button class="btn btn-primary dropdown-toggle" data_toggle="dropdown" type="submit">
          <span class="glyphicon glyphicon-shopping-cart"></span>
          <span class="badge" id="cart-badge-id">5</span>
</button></form>

另一个很好的问题,是否甚至可以以这种方式制作下拉菜单。

【问题讨论】:

    标签: ruby-on-rails twitter-bootstrap


    【解决方案1】:

    如果您只想要一个下拉菜单,您可以使用select_tag('attr', options_for_select()) 来获得您的下拉菜单,然后执行类似这样的操作来启动您想做的任何 ajax 操作:

    $('#my_select_dropdown').change(function(){
      //do stuff here
    });
    

    编辑:如果您想了解更多详细信息,请查看select_tag 文档的链接:http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag

    【讨论】:

    • 不,我想制作下拉菜单,其中列出了我的购物车产品、图片、数量等。
    【解决方案2】:

    只需覆盖方法的 html_options 参数中的 type 属性,该参数与您为元素传递的类名相同:

      <%= button_to navbar_carth_path, {remote: true, method: :get}, {"class": "btn btn-primary dropdown-toggle", "data-toggle": "dropdown", "type": "button"}  do %>
    

    我认为你还在与 options 哈希相同的哈希中添加 html 选项,但它们并不相同,选项哈希(第一个)是rails helper 本身,第二个哈希对应于您要应用于渲染元素的属性值:

    button_to(name = nil, options = nil, html_options = nil, &block) 
    

    检查方法here的签名。

    更新您也传递了错误的remote :true 参数,远程单词和实际值之间有一个空格,因此它被解析为一个符号,它应该是:remote: true。另一方面,我建议将助手的所有 html 选项(如 data-toggle)括在引号之间,而不仅仅是它的值,以便您可以使用连字符而不是破折号(引导选项是 data-toggleAFAIK,而不是 data_toggle

    【讨论】:

    • 是的,已经尝试过了。它不会覆盖或改变任何东西,它对你有用吗?
    • @marisancans 是的,请查看我的更新答案
    • 嘿,像你说的那样改变了代码: data-toggle 现在可以正常工作,但是类型没有改变,当我写一些类似“typex”的东西时在变化中。也许它无法覆盖?
    • 存在重复的类型:“按钮”,删除也不起作用
    • 您是否注意到我将两个不同的哈希值作为参数传递给该方法,您是否检查了方法签名的链接?再看看我的sn-p,你会发现它不一样。
    【解决方案3】:

    所以似乎在使用 rails button_to 并添加数据时:属性不会覆盖 type="button",所以我尝试尝试并想出了这个。

    <%= link_to navbar_cart_path, { method: :get, remote: true, class: "btn btn-primary dropdown-toggle", "id": "cart-button", "type": "button", "data-toggle": "dropdown" }  do %>
              <span class="glyphicon glyphicon-shopping-cart"></span>
              <span class="badge" ><%="#{@cart.line_items_count}" %></span>
          <% end %>
    

    这会生成 HTML 代码:

    a class="btn btn-primary dropdown-toggle" id="cart-button" type="button" data-toggle="dropdown" data-remote="true" data-method="get" href="/navbar_cart">
              <span class="glyphicon glyphicon-shopping-cart"></span>
              <span class="badge" >5</span>
    

    然后我可以使用 AJAX GET 在下拉标签中呈现 @cart 部分

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多