0

私は Ruby にまったく慣れていないので、しばらくの間、ばかばかしいほど簡単な問題に頭を悩ませてきました。

簡単なブログ アプリケーション (Ruby on Rails のドキュメントにあるもの) から始めて、ユーザーが投稿を電子メールで送信できるように拡張しようとしています。post クラスに email メソッドが正常に機能しています。ユーザーがリンク/ボタンをクリックしたときに呼び出すのに苦労しています。

これは JavaScript ではなく、onclick だけを使用することはできません。おそらく、blog/posts/2/email のようなリンクにルーティングするのも 1 つのアイデアですが、どこから始めればよいかさえわかりません。もっと簡単な方法があったとしても驚かないでしょう。

誰か初心者を助けてくれませんか?

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

次のコードは、作成後にメールを送信します。別のボタン(「emailme」)で結び付けたい場合は、createアクションのコードを新しいアクション(send_mail)に移動し、「emailme」と「send_mail」を結び付けることができます。

app / controllers / posts_controller.rb

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

app / 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

app / 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 に答える