0

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

我希望每次用户进入邀请页面时都初始化这个数组。根据我在Programming Ruby 1.9一书中读到的内容,我应该能够在某处声明这样的数组。

friend_email = Array.new

当我验证在我的视图中输入的数据时,我需要足够长的可用变量才能在我的控制器中访问它。根据我对变量的有限理解,它们通常在它们被声明或初始化的地方之外不可用。这使得尝试将输入的信息发送到邮件程序时变得有趣。我在模型上使用了临时字段来简化事情。

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

在 ruby​​ on rails 的视图中渲染数组

任何帮助,将不胜感激。

4

2 回答 2

0

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

要回答您的问题的标题:“声明要在 Ruby On Rails 视图中使用的数组变量”-

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

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
于 2012-07-27T18:55:05.663 回答
0

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

于 2012-07-27T18:20:05.013 回答