如何调用类方法
问题描述:
我对Ruby完全陌生,而且我一直在嘲弄我的头脑,一段时间内应该是一个愚蠢的简单问题。如何调用类方法
我从一个简单的博客应用程序(Ruby on Rails文档中的应用程序)开始,我试图增加它以便用户可以通过电子邮件发送消息。我在post类中有一个email方法工作得很好,当用户点击一个链接/按钮时,我很难调用它。
我意识到这不是JavaScript,我不能只使用onclick。也许有一个想法是转到像博客/ posts/2/email这样的链接,但我甚至不知道从哪里开始,如果有更简单的方法,我不会感到惊讶。
有人可以帮助noob出来吗?
答
创建电子邮件传递一个控制器动作
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
新控制器方法的路线最后使窗体在您的视图,并将其链接起来到你的控制器动作。
答
以下代码将在创建后发送邮件。如果你想用一个单独的按钮(“给我发电子邮件”),你可以将创建操作中的代码移动到一个新的操作(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>