イベントの参加者を見れるように、scaffoldのshowを拡張する。
event/show.rhtmlに以下を足すだけ。
<table> <tr><td>参加候補者</td><td>参加</td></tr> <% @event.memberships.each do |membership| %> <tr> <td><%= membership.user.nickname %></td> <td><%= membership.joined ? "YES" : "?" %></td> </tr> <% end %> </table>
招待メールを出せるようにしよう。環境設定をconfig/environment.rbに足した。
ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.smtp_settings = { :address => 'server.example.com' }
メーラを作る。
% ruby script/generate mailer Mailer invite
models/mailer.rbが出来ているので書き換える。 本文を@bodyで渡すので、mailer/invite.rhtmlも出来ているがそのままにしておく。
class Mailer < ActionMailer::Base def invite(event, from) @charset = "iso-2022-jp" @subject = NKF.nkf('-j -m0', event.title) @body = NKF.nkf('-j -m0', event.mailbody) @recipients = event.users.collect {|user| user.mailaddress} @from = from.mailaddress @headers = {} end end
event/show.rhtmlにボタンを付ける。
<% form_tag :action => 'mail', :id => @event do %> <%= submit_tag '参加候補者にメール' %> <% end %>
event_controller.rbにmailアクションを足してメールを出す。
def mail @event = Event.find(params[:id]) Mailer.deliver_invite(@event, User.find(session[:user_id])) redirect_to :action => 'list' end
自分にメールしている範囲では、subjectはiso-2022-jpなbase64、本文は生iso-2022-jpになっているけど、 本当に大丈夫かなぁ。