2010-05-16 72 views
0

我有一個名爲Contact_Email的模型。當電子郵件模板通過ActionMailer發送給特定的聯繫人時,作爲創建操作的一部分,它會通過.save發送它。如何創建另一個控制器動作來在rails中創建對象?

但是,我想創建一個「skip」動作,它也會創建一個Contact_Email,但不會發送一個ActionMailer並允許我設置不同的狀態。

我想創建一個單獨的行動,因爲我想使這個響應的remote_for_tag,這樣我就可以有一個Ajax按鈕,表明它已被「跳過」:

這裏是我試過了,但同時它創建一個Contact_Email,當我想返回並再次查看所有聯繫人時,我最終得到一個錯誤。

def skip 
    @contact_email = ContactEmail.new 
    @contact_email.contact_id = params[:contact_id] 
    @contact_email.email_id = params[:email_id] 

    @contact_email.status = "skipped" 

    if @contact_email.save 
     flash[:notice] = "skipped email" 
     redirect_to contact_emails_url 
    end 
    end 
+2

什麼是錯誤?你顯示的代碼看起來很好。 – 2010-05-16 01:45:41

+0

當我嘗試顯示所有「過期」電子郵件列表時,我收到「期望1屬性)」或某種錯誤。當我編輯新創建的contact_email並保存時,它會被修復,這會創建一個created_date和sent_date。然後錯誤消失,但我不使用這些日期...我想我可以將它添加到控制器中以查看...? – Angela 2010-05-16 16:34:38

回答

0

那麼,你的代碼似乎沒問題,只是幾件事情。

  • 你沒有else語句,如果你的 @contact_email不保存呢?

  • 你應該明確地不分配所有的參數。使用控制器中的contact_email和 @contact_email = ContactEmail.new(params[:contact_email])視圖中的表單。雖然已經「跳過」分開分配是好的

  • 定義你的路由正確。在這種情況下 map.resources :contact_emails, :member => {:skip => :post} 而且一切都應該很好
+0

啊我認爲這應該是更好的(但相同),因爲:map.skip_email「contact_email/skip_email /:contact_id /:email_id」, :controller =>「contact_emails」, :action =>「skip」 – Angela 2010-05-17 03:10:11

相關問題