如何通过get方法强制传递所需的url路径

时间:2014-09-15 09:43:43

标签: ruby-on-rails

我有路线

    collection do
      get :show_logs
    end

我希望用户请求show_logs/[:id]

禁止用户在不需要show_logs

的情况下发送id个请求

获得它的更好方法是什么?

更新

如果现在,我将我的规则编写如下,

尝试访问时不使用:idhttp://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

3 个答案:

答案 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