Rails:如何使用button_to将数组从视图传递到控制器

时间:2018-01-13 03:30:16

标签: ruby-on-rails

我是铁杆新手。我要做的是设计一个订单系统。它列出了一堆项目,每个项目后跟一个选择框,以便人们可以选择他们想要订购的号码。我的问题是如何使用button_to将此count []数组和相应的项ID从视图传递给控制器​​。感谢您的任何建议。

  <% @items.each do |item| %>
    <li>
      <%= link_to item.name, item %>
      <%= select_tag 'count[]', options_for_select([0,1,2,3,4,5])%>
    </li>
  <% end %>
  <%= button_to 'Place Order', orders_confirm_path, method: :post, params: { ??? } %>

2 个答案:

答案 0 :(得分:1)

您可以使用标签多选。

您的视图中的示例。对于可以选择多个ctrl +单击项目:

<%= form_tag orders_confirm_path, method: :post %>
<label>select more than one with ctrl + click at item</label>
<p><%= select_tag :items, Item.all.collect {|item| [item.name, tem.id]}, {prompt: "Select item"}, multiple: true %></p>

<p><%= button_to 'Place Order'%></p>

和你的控制器你可以用这种方式接收参数:

def创建     @order = Order.new(params [:items])     if @ order.save      代码......     其他       代码......     结束 端

答案 1 :(得分:0)

你可以使用下面的表格

root=0
pwr=1
check=0
integer=int(input('Enter the number:'))
while(root**pwr<abs(integer)):
    while(pwr<6):
        if root**pwr==abs(integer):
            check=1
            print('Root =',root,'or -'+ str(root),'and Power =',pwr)
        pwr+=1
    root+=1
    pwr=1    #<--------------Resetting pwr to 1 inside the outer loop
if check!=1:
    print('No such combination exists')

现在您可以在控制器<%= form_tag orders_confirm_path, method: :post do %> <% @items.each do |item| %> <%= hidden_field_tag :item_id, value: item.id %> <li> <%= link_to item.name, item %> <%= select_tag 'count[]', options_for_select([0,1,2,3,4,5])%> </li> <% end %> <%= button_to 'Place Order' %> <% end %> params[:count]

上找到

希望能提供帮助