rails button_to type =“button”

时间:2016-04-05 16:23:17

标签: ruby-on-rails twitter-bootstrap

基本上,我想从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按钮的属性类型=“按钮”,但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>

rails:

<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>

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

3 个答案:

答案 0 :(得分:0)

如果你只是想要下拉,你可以使用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

答案 1 :(得分:0)

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

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

我认为哟也在与选项哈希相同的哈希中添加了 html选项,它们不相同,选项哈希(第一个)是选项rails helper本身,第二个哈希对应于您要应用于呈现元素的属性值:

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

检查方法here的签名。

更新您还传递了remote :true参数错误,远程字和实际值之间有空格,因此它作为符号解析,它应该是:{{1 }}。另一方面,我建议在引号之间包含助手的所有html选项(如remote: true),而不仅仅是它的值,这样你就可以使用连字符而不是破折号(bootstrap选项是data-toggle AFAIK,而不是data-toggle

答案 2 :(得分:0)

所以看起来当使用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部分