我确实尝试了几个建议,但我找不到解决这个问题的方法。我的应用程序工作正常,但当我尝试link_to自定义操作时,它总是尝试路由到显示'操作和结果是参数不匹配('显示'操作等待:id参数,该参数被分配了操作的名称" id" =>& #34; reporte_asist")所以我收到错误:
Started GET "/equipos/reporte_asist.xls?entrenador=1&final=2017-01-30+00%3A00%3A00+-0600&inicio=2017-01-01+00%3A00%3A00+-0600" for ::1 at 2017-01-10 15:53:09 -0600
**Processing by EquiposController#show as XLS**
Parameters: {"entrenador"=>"1", "final"=>"2017-01-30 00:00:00 -0600", "inicio"=>"2017-01-01 00:00:00 -0600", "id"=>"reporte_asist"}
Equipo Load (0.2ms) SELECT "equipos".* FROM "equipos" WHERE "equipos"."id" = ? LIMIT ? [["id", 0], ["LIMIT", 1]]
Completed 404 Not Found in 2ms (ActiveRecord: 0.2ms)
ActiveRecord::RecordNotFound (Couldn't find Equipo with 'id'=reporte_asist):
我尝试删除Turbolinks,但问题仍然存在,这是我用来链接到' xls'格式响应:
<div data-no-turbolinks>
<%= link_to "Excel", reporte_asist_url(format: "xls", entrenador: @entrenador.id, inicio: @inicio, final: @final, controller: "equipos", action: "reporte_asist") %>
</div>
这是我的config / routes.rb的一部分:
resources :categorias
get '/equipos/forma_rep'
post '/equipos/reporte_asist', to: 'equipos#reporte_asist', as: 'reporte_asist'
resources :players
get '/eventos/calendario' => 'eventos#calendario', as: 'calendario'
resources :eventos
get '/equipos/:id/eventos_feed' => 'equipos#eventos_feed', as: 'eventosFeed'
get '/eventos/:id/players_feed' => 'eventos#evento_players', as: 'eventoPlayers'
post '/asistencias', to: 'asistencias#create'
get '/validar/:equipo_id', to: 'players#validar'
resources :equipos
这是rails路由输出:
equipos_forma_rep GET /equipos/forma_rep(.:format) equipos#forma_rep
reporte_asist POST /equipos/reporte_asist(.:format) equipos#reporte_asist
players GET /players(.:format) players#index
POST /players(.:format) players#create
new_player GET /players/new(.:format) players#new
edit_player GET /players/:id/edit(.:format) players#edit
player GET /players/:id(.:format) players#show
PATCH /players/:id(.:format) players#update
PUT /players/:id(.:format) players#update
DELETE /players/:id(.:format) players#destroy
calendario GET /eventos/calendario(.:format) eventos#calendario
eventos GET /eventos(.:format) eventos#index
POST /eventos(.:format) eventos#create
new_evento GET /eventos/new(.:format) eventos#new
edit_evento GET /eventos/:id/edit(.:format) eventos#edit
evento GET /eventos/:id(.:format) eventos#show
PATCH /eventos/:id(.:format) eventos#update
PUT /eventos/:id(.:format) eventos#update
DELETE /eventos/:id(.:format) eventos#destroy
eventosFeed GET /equipos/:id/eventos_feed(.:format) equipos#eventos_feed
eventoPlayers GET /eventos/:id/players_feed(.:format) eventos#evento_players
asistencias POST /asistencias(.:format) asistencias#create
GET /validar/:equipo_id(.:format) players#validar
equipos GET /equipos(.:format) equipos#index
POST /equipos(.:format) equipos#create
new_equipo GET /equipos/new(.:format) equipos#new
edit_equipo GET /equipos/:id/edit(.:format) equipos#edit
equipo GET /equipos/:id(.:format) equipos#show
PATCH /equipos/:id(.:format) equipos#update
PUT /equipos/:id(.:format) equipos#update
DELETE /equipos/:id(.:format) equipos#destroy
请帮帮我。
答案 0 :(得分:1)
HTML <a>
链接会产生GET
请求。 Rails提供了一种通过在链接上设置属性来创建POST
请求的方法。
您的路由生成的网址助手(例如reporte_asist
)仅生成正确的路径/网址。它们不会将任何其他参数传递给link_to
。如果您要向指定的路径发送POST
请求,则需要向传递给method: :post
的选项添加link_to
:
link_to "Excel", reporte_asist_url(...), method: :post
也就是说,POST
听起来像是用于此操作的正确HTTP动词。这听起来应该是GET
请求。
注意:我为了简洁/清晰而截断了传递给reporte_asist_url
的参数;你还需要它们。