2012-07-27 108 views
0

我正在使用Ruby 1.9.3和Rails 3.2.6。我想创建一个页面,用户可以邀请朋友注册。该页面将包含许多用户可以输入电子邮件地址的字段。我想这些存储在一个数组中。基本上,页面上的每个字段都是数组中的一个元素。我希望循环访问数组元素,验证输入的每个电子邮件地址,更新我的表上的临时电子邮件字段,然后启动ActionMailer以发送邀请电子邮件。声明数组变量以在Ruby On Rails视图中使用

我想每次用户转到邀请页面时,都会初始化此数组。从我在书中读到的编程Ruby 1.9我应该可以在某处声明一个这样的数组。

friend_email = Array.new 

我需要足够的可变长可访问它在我的控制器,当我确认在我看来输入的数据。从我对变量的有限理解中,他们通常在声明的初始化位置之外通常不可用。当试图将输入的信息发送到邮件程序时,这会很有趣。我在模型上使用了临时字段来简化事情。

如果有更好的方法来做到这一点,我将不胜感激的信息。我也会继续研究。我只看到了下面列出的一个数组,其中现有表填充数组,然后显示在视图中。我想从视图中填充数组。

Render an array in a view in ruby on rails

任何帮助,将不胜感激。

+0

为什么是数组?为什么没有标准的ActiveRecord模型,比如说Invitation,它可以属于用户? – 2012-07-27 18:21:17

+0

@ denis.peplin - 听起来像OP不希望/需要邀请的人的长期记录。因此,通过AR存储在dbms中会过度。 – 2012-07-27 18:30:15

+0

至少你会有一个人的历史记录,他使用你的表格发送大量的垃圾邮件。或者,从乐观的角度来看,好的统计图表。 – 2012-07-27 19:06:58

回答

0

嗯,我相信这个问题的一个好方法可能是使用一个单一的text_field,用户可以输入用逗号/冒号/分号/分隔符分隔的电子邮件,并且当提交时,控制器会分开这些电子邮件使用split方法和一些正则表达式,然后验证其中的每一个。如果验证通过,则手头上有一系列电子邮件。
我不认为你真的需要一个数组来做到这一点。

+0

我同意不使用数组。我非常感谢你和其他人一起的投入。我意识到我没有像通常那样思考这件事。尽管我不想创建另一个模型,但我认为为了更好地控制我们网站的用途,这是最谨慎的做法。我们将记录谁在表格中发送了邀请,以及我们将收到的密送抄送电子邮件。我们可以从我们的系统中删除和阻止用户。非常感谢。我们还计划实施验证码。 – 2012-07-27 20:26:23

0

如果您只想显示/处理电子邮件地址列表,我看不出您的活动记录(AR)模型如何参与其中。如果他们不需要在dbms中并且不参与AR模型,则不涉及AR模型。

要回答你的Q的标题:“声明数组变量要使用一个Ruby on Rails的视图” -

答:声明数组在控制器的一个实例变量。 (实例变量以@开头)控制器中声明的所有实例变量在视图中自动可用。

def show_emails 
    @emails = [] 
return # the view "show_emails" will be used 

def process_emails 
    @emails = params['emails'] || [] 

    ... 
    # check the emails. If there's a bad one, you can 
    # re-render the show_emails view with an error msg 
    # or send out the emails and then show a confirmation page 
end 
+0

不是REST风格。用'new'和'create'动作为EmailsController投票。 – 2012-07-27 19:09:00

+0

我将与我的丈夫aka商业伙伴讨论这个问题。我想我们最终会为此使用一个模型。这肯定会更容易编程,我们将能够跟踪那些想要使用我们网站的人,以达到意想不到的目的。 – 2012-07-27 20:20:32