Mysql 根据数据库中存在的值显示选择选项

Mysql 根据数据库中存在的值显示选择选项,mysql,ruby-on-rails,ruby-on-rails-4,Mysql,Ruby On Rails,Ruby On Rails 4,如果数据库字段“day”中存在值“Monday”,则选择选项中不应出现值“Monday”。还有其他有效的方法吗? <%= form_for(@timetable) do |f| %> <% Timetable.all.each do |t| %> <% if t.day == "Monday" %> <%= f.select :day, options_for_select(%w[Tuesday

如果数据库字段“day”中存在值“Monday”,则选择选项中不应出现值“Monday”。还有其他有效的方法吗?


<%= form_for(@timetable) do |f| %>     
<% Timetable.all.each do |t| %>
      <% if t.day == "Monday" %>
        <%= f.select :day, options_for_select(%w[Tuesday Wednesday Thursday Friday Saturday Sunday]) %>
      <% elsif t.day == "Tuesday" %>
        <%= f.select :day, options_for_select(%w[Wednesday Thursday Friday Saturday Sunday]) %>
      <% elsif t.day == "Wednesday" %>
        <%= f.select :day, options_for_select(%w[Thursday Friday Saturday Sunday]) %>
      <% elsif t.day == "Thursday" %>
        <%= f.select :day, options_for_select(%w[Friday Saturday Sunday]) %>
      <% elsif t.day == "Friday" %>
        <%= f.select :day, options_for_select(%w[Saturday Sunday]) %>
      <% elsif t.day == "Saturday" %>
        <%= f.select :day, options_for_select(%w[Sunday]) %>
      <% else %>
        <%= f.select :day, options_for_select(%w[Monday Tuesday Wednesday Thursday Friday Saturday Sunday]) %>
      <% end %>
<% end %>
<% end %>


我注释掉了循环,因为显示了多个选择框

这段代码不起作用,还是您正在寻找重构?代码不起作用,以及其他有效方法的方法什么是
@timeline
//代码在这里,请不要为问题添加答案(改为作为单独答案发布)。选择框应仅显示一次>选择框应仅显示一次,这与您的示例所示不同;)获取错误。nil:nilclass的未定义方法“-”实际上您得到了这个错误,因为您的“values”变量是nil@rinold,是否已将
变量插入到
符号中?我错过了那部分。
<% Timetable.all.each do |t| %>
  <%= f.select :day, options_for_select(%w[Sunday Saturday Friday Thursday Wednesday Tuesday Monday].take_while { |day| day != t.day }.reverse!, selected: @timetable.day ) %>
<% end %>
<% values = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] %>
<%# Timetable.all.each do |t| %>
        <%= f.select :day, options_for_select(values - [@timetable.day], selected: @timetable.day ) %>
<%# end %>