Я мог бы действительно использовать некоторую помощь, чтобы лучше всего выполнить следующее:
У меня есть ниже в моем контроллере (и я знаю, что это не должно быть здесь и нужно перейти к модели)
Это система обмена сообщениями по электронной почте, поэтому в зависимости от занимаемой должности вы можете отправлять электронные письма группам людей. Так что если вы командир батальона и т.д., вы можете отправить сообщение одной из 5 групп, определенных ниже. Если вы командир роты, ваши группы меняются. В представлении есть выпадающее меню, и вы выбираете группу, в которую отправляется ваше сообщение. Меню выбора заполняется в зависимости от позиции вошедшего в систему пользователя.
Проблема в том, что часть "elsif" не заполняет сообщение правильно. Он показывает выпадающий список справа и действует так, как будто электронное письмо отправлено, но электронные письма не заполняются. Однако первое значение (Battalion Commander) работает отлично.
У меня что-то неправильно написано в операторе if else? Кажется, это должно быть довольно просто. Положение пользователя всегда правильно отражает, так что это не так.
if (@position == "Battalion Commander" or "Command Sergeant Major" or "FRSA" or "Battalion FRG Leader")
@bnok = (@user.battalion.primaries).collect(&:email).select{|s| !s.blank?}.join(", ")
@bspouses = (@user.battalion.primaries(:conditions => ["relationship = 'spouse'"])).collect(&:email).select{|s| !s.blank?}.join(", ")
@bsoldiers= (@user.battalion.soldiers).collect(&:email).select{|s| !s.blank?}.join(", ")
@bsoldierspouse=((@user.battalion.soldiers)+(@user.battalion.primaries(:conditions => ["relationship = 'spouse'"]))).collect(&:email).select{|s| !s.blank?}.join(", ")
@ballcontacts=((@user.battalion.soldiers)+(@user.battalion.primaries)+(@user.battalion.additionals)).collect(&:email).select{|s| !s.blank?}.join(", ")
elsif
@position == ("Company Commander" or "First Sergeant" or "FRG Leader")
@nok = (@user.company.primaries).collect(&:email).select{|s| !s.blank?}.join(", ")
@spouses = (@user.company.primaries(:conditions => ["relationship = 'spouse'"])).collect(&:email).select{|s| !s.blank?}.join(", ")
@soldiers= (@user.company.soldiers).collect(&:email).select{|s| !s.blank?}.join(", ")
@soldierspouse=((@user.company.soldiers)+(@user.company.primaries(:conditions => ["relationship = 'spouse'"]))).collect(&:email).select{|s| !s.blank?}.join(", ")
@allcontacts=((@user.company.soldiers)+(@user.company.primaries)+(@user.company.additionals)).collect(&:email).select{|s| !s.blank?}.join(", ")
end
Так что это не работает, оно работает либо для одного набора позиций, либо для другого, но не для обоих. Это соответствует меню выбора в представлении и в зависимости от того, какую позицию вы удерживаете в запросе для определенных групп людей, меняется.
Так что в представлении у меня есть это:
<% if @position == "Battalion Commander" %>
<%= f.select(:bcc_email, [["Please Select", ""], ["Battalion NOK", @bnok], ["Battalion Spouses", @bspouses], ["Battalion Soldiers Only", @bsoldiers], ["Battalion Soldiers & Spouses", @bsoldierspouse], ["All Battalion Contacts", @ballcontacts]]) %></h1><br />
Я все еще изучаю рельсы, и я не уверен, что утверждение case будет лучше, но тогда я запутался в том, куда он идет и как это выражение case вписывается в представление.
Любое руководство было бы замечательно, я пытаюсь разобраться с этим и выяснить это, но я был бы очень признателен за помощь.