路由到一个特殊的控制器动作

Routing to a special controller action

我想要一个按钮 select 一个 zip 文件,解压缩,处理其中一个文件并将数据添加到数据库中。我一直无法执行控制器操作。

bp_stats.controller

def import_data
  puts "Massage and import data here"
end

routes.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"):

你的路线说

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

这显然是 get 请求路由而不是 post 请求,您需要使用 post

将其更改为 post 请求的路由
post 'import_data', to: 'bp_stats#import_data'