0

actionmailerを介して「ページ」を送信するアプリがあります。私のビューコードでは、特定のユニットを選択するように設定されており、そのユニットには、電子メール/ページを取得する医療従事者が割り当てられています。selectステートメントにすべてのユニットをページングするオプションを含めたいのですが、その方法がわかりません。

ビュー/フォームコード:

<%= form_for(@page) do |f| %>

  <%= f.label :message %>
  <%= f.text_field :message %>

  <%= f.label 'Medic'%>

  <%= f.collection_select(:unit_id, Unit.order("unit_name ASC"), :id, :unit_name, {}, {:class => 'select'})%>

<%= f.button :send, :class => 'btn btn-info' %>

<% end %>

コントローラコード:

def create

    @page = Paging.new(params[:paging])
    unit = Unit.find(params[:paging][:unit_id])
    message = params[:paging][:message]


     if @page.save
       PagingsMailer.paging(unit.incharge, unit, message).deliver
       PagingsMailer.paging(unit.attendant, unit, message).deliver
       redirect_to pagings_path, notice: "Page was successfully sent."
      else
        redirect_to pagings_path
     end
  end

オプションは、元の選択が無視される限り、選択自体に含めることも、別の選択/チェックボックスとして使用することもできます。

これに関するどんな助けもありがたいです。

4

1 に答える 1

0

私はこれについていくつかの助けを得て、フォームに配列の配列を作成し、「すべて」をコントローラーに渡して個々の郵送を実行することで解決できました。

ビューコード:

<%= f.select :unit_id, options_for_select(Unit.order.map{ |unit| [unit.unit_name, unit.id] } + [["All Medics", "all"]]), {}, {:class => 'select'} %>

コントローラーコード:

def create
    message = params[:paging][:message]

    if params[:paging][:unit_id] == "all"
      Unit.all.each do |unit|
        @page = Paging.new(params[:paging])
        @page.unit_id = unit.id

        if @page.save
          PagingsMailer.paging(unit.incharge, unit, message).deliver
          PagingsMailer.paging(unit.attendant, unit, message).deliver
          flash.notice = "Page was successfully sent."
        end
      end
    else
      @page = Paging.new(params[:paging])
      unit = Unit.find(params[:paging][:unit_id])

      if @page.save
        PagingsMailer.paging(unit.incharge, unit, message).deliver
        PagingsMailer.paging(unit.attendant, unit, message).deliver
        flash.notice = "Page was successfully sent."
      end
    end
于 2012-10-12T21:24:00.590 に答える