2012-07-13 75 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>