0

貸し出し/販売可能なピン表示ページにボタンを作成したいと考えています。このボタンをクリックすると、ピンの所有者に電子メールが送信され、current_user がそのアイテムに興味を持っていることを知らせてから、電子メールが送信されたことを current_user に知らせる通知...

メール部分全体を設定し、ページの読み込み時にメールを送信することができましたが、ボタンがクリックされたときにのみ送信したいです。メールの送信と確認の表示の両方を行うページをボタンに読み込ませる必要があるようです。私が抱えている問題は、 @pin および current_user 変数をページに渡すことです。

私はこれを正しい方法で行っていますか、それとも間違っていますか? どんな助けでも大歓迎です!

送信/確認ページを開く方法は次のとおりです。

<%= button_tag(:type => 'button', class: "btn btn-primary", onclick: "window.location.href='/sendrequest'") do %>
<%= content_tag(:strong, 'Request Contact') %>
<% end %>

そして、そのページで実行する必要があるのは次のとおりです。

<% if user_signed_in? %>
<% UserMailer.request_pin(@users, @pin).deliver %>
<p>
Your request has been sent!
</p>
<% else %>
...
<% end %>

UserMailer.request_pin のコードはすべて正常に動作しています。

4

2 に答える 2

0

ピンの所有者に通知するための別のコントローラー アクションを作成し、リンクで jquery を使用してリクエストを送信すると、ページの読み込みは不要になり、送信されたという通知を jquery で処理することもできます。

私はあなたのコードベースをまったく知らないので、これは大まかな例です

# Routs file
get "/pins/:id/post" => "pins#notify", as: notify_pin_owner

# Controller
def notify
@pin = Pin.find(params[:id])
<% if user_signed_in? %>
<% UserMailer.request_pin(@users, @pin).deliver %>
<p>
Your request has been sent!
</p>
<% else %>
...
<% end %>
end

# View
<%= link_to "notify", "#", data-link: notify_pin_owner_path( @pin ), class: 'pin-notification' %>

# In javascript
$(document).ready( function() {
  $('.pin-notification').click( function() {
    $.ajax({
      type: "GET",
      url: $(this).data('link'),
      success: 
    })
  })
})

それが役立つことを願っています

于 2013-04-07T22:52:52.263 に答える