rinold simon
rinold simon

Reputation: 3052

display select options based on value exists in database

<%= 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 %>

If the value "Monday" exits in the database field "day" then the value "Monday" should not appear in the select options. Is there any other efficient way to do this?

Upvotes: 0

Views: 80

Answers (2)

Emu
Emu

Reputation: 5905

<% 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 %>

I comment out the looping as there are showing multiple select box.

Upvotes: 0

Wizard of Ogz
Wizard of Ogz

Reputation: 12643

<% 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 %>

Upvotes: 0

Related Questions