2012-07-27 110 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