基本上,我想从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>
另一个很好的问题,即使是否甚至可以通过这种方式制作下拉菜单。
答案 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部分