0

我有一个通过 actionmailer 发送“页面”的应用程序。在我的视图代码中,我将其设置为选择一个特定的单元,然后分配获得电子邮件/页面的医务人员。我想在我的选择语句中包含一个对所有单元进行分页的选项,但不知道该怎么做。

查看/表单代码:

<%= 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 回答