如何将ID传递给控制器​​中的操作-Ruby on Rails

时间:2018-12-12 03:34:55

标签: ruby-on-rails

我正在使用axlsx gem创建报告,我需要传递我选择以生成其报告的事件的ID,但是我不知道如何在我创建的控制器的操作中获取该ID。 / p>

我创建了此表,必须在其中获取要发送给操作的ID:

My table

这是我表的代码,在这里我尝试传递id,但是我不知道如何在控制器中获取它:

def data
    events.map do |event|
      [
          event.name,
          (
              link_to(
                  raw("<button id='button' class='btn btn-default'><i class='fa fa-file-text' style='cursor: pointer;'></i></button>"),
                  assistants_report_admin_report_assistants_by_events_path(event.id, format: :xlsx)
              )
          )
      ]
    end
  end

对我的控制器执行的操作:

def assistants_report
    @event_report = Event.where(id: "I need the id here!")
    respond_to do |format|
      format.xlsx {render xlsx: 'report_all_assistants', :filename => "aa.xlsx", layout: false, disposition: "attachment"}
    end
  end

routes.rb:

resources :report_assistants_by_events do
      collection do
        get "assistants_report"
      end
    end

1 个答案:

答案 0 :(得分:0)

您需要在member中使用collection而不是routes.rb,然后在控制器中,您可以通过params[:id]访问id。

assistants_report_admin_report_assistants_by_events_path更改为collection后,还需要用新路径替换member