代码之家  ›  专栏  ›  技术社区  ›  DollarChills

不重复的多个条件句

  •  0
  • DollarChills  · 技术社区  · 7 年前

    想知道当一个变量可以等于4、6或8而无需重复以前的输入时,是否有一种更干净的方法来进行条件转换?

    例如

    <%= form_with(model: sale, local: true) do |f| %>
     <% if @sale.cost == 4 %>
       <%= f.text_field :sale_1 %>
       <%= f.text_field :sale_2 %>
       <%= f.text_field :sale_3 %>
       <%= f.text_field :sale_4 %>
     <% elsif @sale.cost == 6 %>
       <%= f.text_field :sale_1 %>
       <%= f.text_field :sale_2 %>
       <%= f.text_field :sale_3 %>
       <%= f.text_field :sale_4 %>
       <%= f.text_field :sale_5 %>
       <%= f.text_field :sale_6 %>
     <% elsif @sale.cost == 8 %>
       <%= f.text_field :sale_1 %>
       <%= f.text_field :sale_2 %>
       <%= f.text_field :sale_3 %>
       <%= f.text_field :sale_4 %>
       <%= f.text_field :sale_5 %>
       <%= f.text_field :sale_6 %>
       <%= f.text_field :sale_7 %>
       <%= f.text_field :sale_8 %>
     <% end %>
    <% end %>
    

    <%= f.text_field :sale_1 %> , <%= f.text_field :sale_2 %> @sale.cost == 6 然后在前面的4之后添加两个必需的输入?例如:

    <%= form_with(model: sale, local: true) do |f| %>
      <% if @sale.cost == 4 %>
        <%= f.text_field :sale_1 %>
        <%= f.text_field :sale_2 %>
        <%= f.text_field :sale_3 %>
        <%= f.text_field :sale_4 %>
      <% some statement @sale.cost == 6 %>
        <%= f.text_field :sale_5 %>
        <%= f.text_field :sale_6 %>
      <% some statement @sale.cost == 8 %>
        <%= f.text_field :sale_7 %>
        <%= f.text_field :sale_8 %>
    <% end %>
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Raj    7 年前

    <% if [4,6,8].include?(@sale.cost) %>
      <% @sale.cost.times do |i| %>
        <%= f.text_field :"sale_#{i+1}" %>
      <% end %>
    <% end %>
    
        2
  •  2
  •   DollarChills    7 年前

    <%= form_with(model: sale, local: true) do |f| %>
      <% if @sale.cost >= 4 %>
        <%= f.text_field :sale_1 %>
        <%= f.text_field :sale_2 %>
        <%= f.text_field :sale_3 %>
        <%= f.text_field :sale_4 %>
      <% if @sale.cost >= 6 %>
        <%= f.text_field :sale_5 %>
        <%= f.text_field :sale_6 %>
      <% if @sale.cost >= 8 %>
        <%= f.text_field :sale_7 %>
        <%= f.text_field :sale_8 %>
    <% end %>
    <% end %>
    <% end %>