查询字符串参数始终为 nil

Query string param is always nil

这就是我通过以下路线检索 params[:status] 的方式:

namespace :admin do
  get 'provider/status/:status', as: 'status_provider', to: 'providers#index'`
end

但我总是得到 params[:status] return nil:

if params[:status].nil?
  providers = Provider.order("#{sort_column} #{sort_direction}")
else
  providers = Provider.filter_by_params(params[:status]).order("#{sort_column} #{sort_direction}")
end

视图如下:

<%= admin_status_provider_path("enabled") %>

已更新

我也试过这样编辑我的视图:

<%= admin_status_provider_path(status: "enabled") %>

<a href="<%= admin_status_provider_path(status: 'enabled') %>" class="btn btn-default">
  Enabled
</a>

但还是一样的结果。

您的状态期望 :status 为整数,因此以下更改应该可以解决问题

namespace :admin do
  get 'provider/status/:status', as: 'status_provider', to: 'providers#index', constraints: { status: /.*/ }
end

这样就可以了

Started GET "provider/status/abc" for 127.0.0.1 
Processing by ProvidersController#index as HTML
Parameters: {"status"=>"abc"}