首页 > 解决方案 > 路由到一个特殊的控制器动作

问题描述

我想要一个按钮来选择一个 zip 文件,解压缩,处理其中一个文件并将数据添加到数据库中。我被困在控制器动作上。

bp_stats.controller

def import_data
  puts "Massage and import data here"
end

路线.rb

get 'import_data', to: 'bp_stats#import_data'

中的导入按钮_import_data.html.erb

<%= form_tag( action: :import_data, controller: 'bp_stats' ) do %>
  <%= file_field_tag :filename %>
  <%= submit_tag( "Import" ) %>
<% end %>

我收到此错误

ActionController::RoutingError (No route matches [POST] "/import_data"):

标签: ruby-on-railsroutescontroller

解决方案


你的路线说

get 'import_data', to: 'bp_stats#import_data'

这显然是获取请求路由而不是发布请求,您需要将其更改为使用 post 发布请求的路由

post 'import_data', to: 'bp_stats#import_data'

推荐阅读