【问题标题】:display select options based on value exists in database根据数据库中存在的值显示选择选项
【发布时间】:2015-06-03 05:03:36
【问题描述】:
<%= 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 %>

如果数据库字段“day”中存在值“Monday”,则选择选项中不应出现值“Monday”。有没有其他有效的方法来做到这一点?

【问题讨论】:

  • 这段代码是不起作用还是您正在寻找重构?
  • 代码不起作用以及其他有效方式的方法
  • 什么是@timetable
  • //代码放在这里

标签: mysql ruby-on-rails ruby-on-rails-4


【解决方案1】:
<% 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 %>

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

【讨论】:

  • 出现错误。 nil:NilClass 的未定义方法“-”
  • 实际上你得到这个错误是因为你的'values'变量是nil
  • @rinold,您是否将values 变量插入到&lt;%%&gt; 符号中?我错过了那部分。
【解决方案2】:
<% 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 %>

【讨论】:

  • 选择框应该只出现一次
  • > 选择框应该只出现一次这不是你的例子显示的;)
猜你喜欢
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 2010-12-14
  • 2015-07-11
  • 1970-01-01
  • 2022-01-16
  • 2021-12-28
相关资源
最近更新 更多