Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如果有其他情况或案例说明,请提供帮助!_Ruby On Rails_If Statement_Case Statement - Fatal编程技术网

Ruby on rails 如果有其他情况或案例说明,请提供帮助!

Ruby on rails 如果有其他情况或案例说明,请提供帮助!,ruby-on-rails,if-statement,case-statement,Ruby On Rails,If Statement,Case Statement,我真的需要一些帮助来实现以下目标: 我的控制器中有以下内容,我知道这不应该在这里,需要移动到模型 这是一个电子邮件系统,所以根据你的职位,你可以通过电子邮件发送给一组人。因此,如果您是营指挥官等,您可以选择向下面定义的5个小组之一发送消息。如果你是连长,你的团队就会改变。在视图中有一个下拉菜单,您可以选择您的邮件发送到的组。根据登录用户的位置填充选择菜单 问题似乎是elsif部分没有正确填充消息。它显示了正确的下拉列表,就像电子邮件已发送但未填充电子邮件一样。然而,第一价值营指挥官工作良好 在i

我真的需要一些帮助来实现以下目标: 我的控制器中有以下内容,我知道这不应该在这里,需要移动到模型

这是一个电子邮件系统,所以根据你的职位,你可以通过电子邮件发送给一组人。因此,如果您是营指挥官等,您可以选择向下面定义的5个小组之一发送消息。如果你是连长,你的团队就会改变。在视图中有一个下拉菜单,您可以选择您的邮件发送到的组。根据登录用户的位置填充选择菜单

问题似乎是elsif部分没有正确填充消息。它显示了正确的下拉列表,就像电子邮件已发送但未填充电子邮件一样。然而,第一价值营指挥官工作良好

在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 />
我仍在学习rails,我不确定一个案例陈述是否会更好,但我不知道这会发生什么,以及案例陈述如何适合视图


任何指导都是很好的,我正在努力解决这个问题,但我真的非常感谢您的帮助。

首先,如果您能将其格式设置得更清晰一些,可能会有所帮助-对于我们和您自己来说,通常简单的格式设置将有助于识别问题

第二,你的目标是什么?我猜这是某种战争模拟器还是什么?假设您意识到在if语句中,只会执行其中一项:

if (xxx)
    aaaaaaaaaaaaaaaaaa
elseif (yyyy)
    bbbbbbbbbbbbbb
end
如果xxx为true,那么aaaa将被执行,然后它将跳转到末尾。BBB部分将不会被执行——即使为true,因为第一条语句为。但是,如果xxx不为真,则将计算yyy,如果为真,则将发生bbbbb


我希望这能有所帮助?

免责声明:我不懂ruby。有人告诉我,它在某些方面与python和LISP类似,所以这个答案是这样假设的

我要做的是在字典、映射或哈希表中维护这些条件变量,不管您的语言如何调用它。人员的等级将是一个键,该值将对应于您要为该等级执行的函数。比如说,

#the following example is python-esque. you'll have to port it to ruby.
def some_funct1(): #pass parameters if you need to. i don't, here.
    sql_stuff_here

def some_funct2():
    sql_stuff_here

map['important dude'] = some_funct1;
map['another important dude'] = some_funct1;
map['unimportant dude'] = some_funct2;
map['another_unimportant dude'] = some_funct2;

#after some time, you have a person whose rank is rank.

map[rank]() #this will execute the function
你写的

if (... a big test ...)
  ..do some work..
elsif
  ..do something else..
end
但这是错误的!除非您需要检查其他条件,否则您应该只写elsif而不是elsif


[我假设elsif后跟nothing=nil总是false]

San Jancinto您是对的,很抱歉冒犯您,将修正我过去的问题以进行反思。还建议你接受更多的答案,甚至至少投票给他们-把一些东西放回你从中获得信息的社区-你问了9个问题,但从未投票给任何答案:感谢你的帮助。我想问题是,当yyy是BBB的值时,BBB不会发生。我只是不知道为什么。你能调试它,然后打印我们的位置值,并确保它是这三个值中的一个吗?甚至试着在if语句之前直接将其设置为其中一个,以确保它在理论上除了进入elseif部分之外别无选择。此外-xxxx或yyyy是否始终包含该选项?我的意思是,有没有任何一种情况都不适用于这两种选择?如果没有,那么拥有:If xxxxx aaaaaaaaaa else bbbbbbbb endif如何,因为它必须以这种方式落入其中一个。