2013-04-09 68 views
0

我試圖發送電子郵件,如果發佈=審查但我收到語法錯誤。代碼應該如何改變?嘗試添加UserMailer.review_email(@user).deliver導致此錯誤嘗試將UserMailer添加到我的控制器時出現語法錯誤

這是我得到

SyntaxError in PostsController#create 
syntax error, unexpected tIVAR, expecting keyword_do or '{' or '(' 
    mail(:to => [email protected], :subject => "Review") 
    syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.' 
    mail(:to => [email protected], :subject => "Review") 
syntax error, unexpected ')', expecting keyword_end 

在這裏的錯誤就是我正在嘗試放置UserMailer代碼

def create 
    @post = current_user.posts.build(params[:post]) 
    if @post.save 
     if @post.review 
     UserMailer.review_email(@user).deliver 
     flash[:notice] = "Post will be reviewed" 
     redirect_to root_path 
     else 
     flash[:success] = "Posted" 
     redirect_to root_path 
    end 
    else 
     @feed_items = [] 
     render 'static_pages/home' 
    end 
    end 

用戶郵件模式控制器

class UserMailer < ActionMailer::Base 
    default from: "[email protected]" 

    def review_email(user) 
    @user = user 
    mail(:to => [email protected], :subject => "Post needs review") 
    end 

end 
+0

錯誤很可能在您的郵件程序中,我們無法看到。 – 2013-04-09 19:37:36

+0

只是張貼用戶郵件模型..讓我知道,如果你看到任何關閉 – user2159586 2013-04-09 19:44:54

+0

電子郵件地址是字符串。還要注意,除非你有一個過濾器,否則你會爲你的'@ user'值傳遞'nil'。 – 2013-04-09 19:47:43

回答

2

消除(),並使地址成爲一個字符串。

mail :to => "[email protected]", :subject => "Post needs review" 
+2

我不同意刪除'()',特別是如果保留舊樣式的散列符號。它沒有提供可讀性,並且與方法定義不一致。 – 2013-04-09 19:48:40

+0

bbatsov的風格指南指出:「省略括號作爲內部DSL(例如Rake,Rails,RSpec)的一部分的方法的參數,在Ruby中具有」關鍵字「狀態的方法(例如attr_reader,puts)和屬性訪問方法。圍繞着所有其他方法調用的論點。「這就說得通了。我同意戴夫牛頓,把()s放回去。 – Fred 2013-04-09 20:00:38

相關問題