我有路线
collection do
get :show_logs
end
我希望用户请求show_logs/[:id]
。
禁止用户在不需要show_logs
id
个请求
获得它的更好方法是什么?
如果现在,我将我的规则编写如下,
尝试访问时不使用:id
,http://localhost:3000/tool/mvaas/relay_queries/show_logs
我会收到错误ActiveRecord::RecordNotFound in xxx
get '/tool/mvaas/relay_queries/show_logs/:id', to: 'tool/mvaas/relay_queries#show_logs', :via => :get, :as => 'show_logs_tool_mvaas_relay_queries'
namespace :tool do
namespace :mvaas do
resources :relay_queries do
collection do
end
end
end
end
答案 0 :(得分:2)
您应该将其放入member
而不是collection
resources :users do
member do
get :show_logs
end
end
可以使用网址/users/:id/show_logs
如果您绝对希望网址为/users/show_logs/:id
,那么您应该使用
get '/users/show_logs/:id', to: 'users#show_logs'
在resources :users do
阻止之前
答案 1 :(得分:0)
您可以通过以下方式验证params是否存在:
if(params.has_key?(:one))
如果存在 - 请求将完成。 如果缺席 - 重定向/渲染或显示通知。
答案 2 :(得分:0)
get "show_logs/:id" => "controller#action"
更新:只需写下:
namespace :tool do
namespace :mvaas do
resources :relay_queries do
collection do
get "show_logs/:id", action: "show_logs"
end
end
end
end