Ruby on rails 不重复的多个条件句
想知道当一个变量可以等于4、6或8而无需重复以前的输入时,是否有一种更干净的方法来进行条件转换 比如说Ruby on rails 不重复的多个条件句,ruby-on-rails,ruby-on-rails-5,erb,Ruby On Rails,Ruby On Rails 5,Erb,想知道当一个变量可以等于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 %>
<%= 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 %>
我还没有对此进行测试,但应该可以:
<% if [4,6,8].include?(@sale.cost) %>
<% @sale.cost.times do |i| %>
<%= f.text_field :"sale_#{i+1}" %>
<% end %>
<% end %>
我还没有测试过这个,但它应该可以工作:
<% if [4,6,8].include?(@sale.cost) %>
<% @sale.cost.times do |i| %>
<%= f.text_field :"sale_#{i+1}" %>
<% end %>
<% end %>
这取决于您的逻辑,但在这种特定情况下,如果您的条件是实数,如您输入的数字,则可以简单到
<%= 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 %>
= 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 %>
<% 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 %>
= 4 %>
= 6 %>
= 8 %>
啊,就这么简单。谢谢你的帮助。这里的“一些声明”是什么?抱歉@emaillenin,我只是复制/粘贴了问题中的代码,以前没有删除它,但现在已经编辑了。啊,就是这么简单。谢谢你的帮助。这里的“一些声明”是什么?抱歉@emaillenin,我只是复制/粘贴了问题中的代码,以前没有删除它,但现在已经编辑好了。你可以替换“sale##{I+1}”。如果你愿意,可以用:“sale##{I+1}”替换。和@sale.cost.times.每个do | i |
都可以是@sale.cost.times do | i |
[4,6,8]。包括哪些?5
将返回false,因此如果@sale.cost
为5,则需要创建任何文本字段。是的,当sale cost为5时,我们不应创建文本字段。检查问题。当sale cost为5时,if条件都不会为真,因此不会创建文本字段。如果需要,请替换“sale#{i+1}”。to_sym
为:“sale#{i+1}”
。和@sale.cost.times.每个do | i |
都可以是@sale.cost.times do | i |
[4,6,8]。包括哪些?5
将返回false,因此如果@sale.cost
为5,则需要创建任何文本字段。是的,当sale cost为5时,我们不应创建文本字段。检查问题。当销售成本为5时,if条件都不为true,所以不会创建文本字段