0

私は自分のアプリにgem'foreigner'とセットアップコメントを使用していますが、すべてが機能します。ただし、コメントが作成されるたびにユーザーに通知したいと思います。顧客と開発者の2人のユーザーがいます。顧客はコメントを投稿でき、開発者はコメントを投稿できます。

顧客または開発者がコメントを投稿しているかどうかを確認し、適切なテンプレートを使用して電子メールを送信するように、comments_controller.rbファイルを設定するにはどうすればよいですか。

これまでのところ、私は何の作業もせずに次のことを試しました。

  def create
    @comment = Comment.new(params[:comment])

    respond_to do |format|
      if @comment.save
        if current_user.is_developer?
           Notifier.developer_notify(@developer).deliver
        elsif current_user.is_customer?
           Notifier.customer_notify(@customer).deliver
        end
        format.html { redirect_to :back, notice: 'Comment was successfully created.' }
        # format.json { render json: @comment, status: :created, location: @comment }
      else
        format.html { render action: "new" }
        # format.json { render json: @comment.errors, status: :unprocessable_entity }
      end
    end
  end

「developer_notify」と「customer_notify」は、私のNotifierメーラーで定義されたクラスです。

私の「Notifier」メーラーはこれまでのところ次のようになっています。

  def developer_notify(joblisting)
    @joblisting = joblisting
    mail(:to => @joblisting.current_user.email, :subject => "There's a new comment.")
  end

@Joblistingは、各Joblistingに顧客や開発者からの独自のコメントがあるため、参照されるジョブです。

上記を行うと、エラーが発生します-undefined method 'current_user' for nil:NilClass

したがって、ジョブリストIDも、顧客の電子メールアドレスも検出されないのではないかと思います。顧客が同じジョブにコメントを投稿すると、新しいコメントが投稿された通知を含む電子メールが開発者に送信されます。

助言がありますか?

4

1 に答える 1

1

コントローラーから渡していjoblistingます:

def create
 @comment = Comment.new(params[:comment])
 #you have define here joblisting for example:
  joblisting = JobListing.first #adapt the query to your needs
 respond_to do |format|
  if @comment.save
    if current_user.is_developer?
       #here add joblisting as argument after @developer
       Notifier.developer_notify(@developer, joblisting).deliver
    elsif current_user.is_customer?
       #here add joblisting as argument after @developer
       Notifier.customer_notify(@customerm, joblisting).deliver
    end
    format.html { redirect_to :back, notice: 'Comment was successfully created.' }
    # format.json { render json: @comment, status: :created, location: @comment }
  else
    format.html { render action: "new" }
    # format.json { render json: @comment.errors, status: :unprocessable_entity }
  end
 end
end

通知メーラーについて

def developer_notify(@developer, joblisting)
    @joblisting = joblisting
    mail(:to => @joblisting.current_user.email, :subject => "There's a new comment.")
  end

よろしく!

于 2013-01-22T20:56:26.423 に答える