0

我对 Ruby 完全陌生,一段时间以来,我一直在努力思考应该是一个愚蠢的简单问题。

我从一个简单的博客应用程序(Ruby on Rails 文档中的那个)开始,我正在尝试对其进行扩充,以便用户可以通过电子邮件发送帖子。我在 post 类中有一个电子邮件方法工作得很好,当用户单击链接/按钮时,我很难调用它。

我意识到这不是 JavaScript,我不能只使用 onclick。也许一个想法是路由到像 blog/posts/2/email 这样的链接,但我什至不知道从哪里开始,如果有更简单的方法,我不会感到惊讶。

有人可以帮助一个菜鸟吗?

4

2 回答 2

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

最后在您的视图中制作表单并将其链接到您的控制器操作。

于 2012-07-13T20:10:37.807 回答
0

以下代码将在帖子创建时发送邮件。如果你想用一个单独的按钮(“给我发电子邮件”)绑定它,你可以将创建操作中的代码移动到一个新操作(send_mail)并绑定“给我发电子邮件”和“send_mail”

应用程序/控制器/posts_controller.rb

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

应用程序/mailers/mailer.rb

class Mailer < ActionMailer::Base
   default :from => "noob@railstutorial.com"

   def post_it(post)
      @post = post

      mail(:to => "reader@hisdomain.com",
           :subject => "New Post: #{@post.title}",
           :cc => "admin@yourdomain.com")

   end
end

应用程序/views/mailer/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>
于 2012-07-14T11:09:23.243 回答