Ruby如何从HTML表单中获取二维数组?

时间:2017-04-18 05:14:23

标签: ruby-on-rails

我正在尝试编写门票预订系统。
我有一个二维数组存储座位和状态

@movie1 = [["A1", 0], ["A2", 0], ["A3", 1],["A4", 1], ["A5", 1], ["A6", 1], ["A7", 1], ["A8", 1], ["A9", 0], ["A10", 1]]

这是观点

<form action= "seat/test4" method="get">

    <table>
     <% for i in 0..9 do %>
      <% if i == 0 then %>
      <tr>
      <% end %>

     <% if @movie1[i][1] == 1 then %>
       <td bgcolor="red">
         <%= @movie1[i][0] %>
         <input type = button value = "X"
       </td>         
     <%  else  %>
        <td bgcolor="green">
          <%= @movie1[i][0] %>
          <input type="checkbox" id= <%= @movie1[i][0] %> name = <%= @movie1[i][0] %> > 
        </td>
     <% end %>

        <% if i == 9 then %>
     </tr>
        <% end %>
      <% end %>

    </table>

   <input type="submit" value="Purchase">
</form>

如何获取复选框值并更改@movie1[i][1] = 1

1 个答案:

答案 0 :(得分:0)

如果您要更改@movie1@movie1是一个ruby变量,它在页面加载时呈现,之后无法更改。如果你真的想在没有页面重新加载的情况下更改变量,可以通过Ajax call来实现.Rails本身具有实现这一目的的功能。

要了解更多信息,请参阅此链接:

Working with javascript in Rails

另请参阅rails partial

Rails Partial

这用于创建子模板,对于像这样的动态案例非常有用。

作为建议,您还可以按如下方式实现视图

 <form action= "seat/test4" method="get">
 <table>
  <tr>
    <% @movie1.each do |m| %>
      <% if m[1] == 1 %>
        <td bgcolor="red">
        <%= m[0] %>
        <input type = button value = "X" />
      </td>         
      <%  else  %>
       <td bgcolor="green">
        <%= m[0] %>
        <input type="checkbox" id= <%= m[0] %> value="<%= m[0] %>" name = <%= m[0] %> /> 
      </td>
     <% end %>
   <% end %>
  </tr>
 </table>
 <input type="submit" value="Purchase">
 </form>

还将值属性添加到复选框标记