2012-07-13 98 views
0

我對Ruby完全陌生,而且我一直在嘲弄我的頭腦,一段時間內應該是一個愚蠢的簡單問題。如何調用類方法

我從一個簡單的博客應用程序(Ruby on Rails文檔中的應用程序)開始,我試圖增加它以便用戶可以通過電子郵件發送消息。我在post類中有一個email方法工作得很好,當用戶點擊一個鏈接/按鈕時,我很難調用它。

我意識到這不是JavaScript,我不能只使用onclick。也許有一個想法是轉到像博客/ posts/2/email這樣的鏈接,但我甚至不知道從哪裏開始,如果有更簡單的方法,我不會感到驚訝。

有人可以幫助noob出來嗎?

回答

3

創建電子郵件傳遞一個控制器動作

def email_post 
    @post = Post.find(params[:id]) 
    @post.send_to(params[:email]) #send to is instance method on the model 
    #assumes email address is being put in a form of some kind 
end 

然後創建在routes.rb中

resources :posts do 
    member do 
    post 'email_post' 
    end 
end 

新控制器方法的路線最後使窗體在您的視圖,並將其鏈接起來到你的控制器動作。

0

以下代碼將在創建後發送郵件。如果你想用一個單獨的按鈕(「給我發電子郵件」),你可以將創建操作中的代碼移動到一個新的操作(send_mail),並將「發送電子郵件給我」和「發送郵件」聯繫起來

app/posts_controller.rb

def create 
    post = Post.new(params[:post]) 
    Mailer.post_it(post).deliver 
end 

應用程序/郵寄者/ mailer.rb

class Mailer < ActionMailer::Base 
    default :from => "[email protected]" 

    def post_it(post) 
     @post = post 

     mail(:to => "[email protected]", 
      :subject => "New Post: #{@post.title}", 
      :cc => "[email protected]") 

    end 
end 

應用/視圖/郵寄者/ post_it.erb

<!DOCTYPE html> 
<html> 
    <head> 
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> 
    </head> 
    <body> 
    <p><%= @post.content %></p> 
    </body> 
</html>