自定义路由不使用:id

时间:2014-01-02 08:43:52

标签: ruby-on-rails ruby-on-rails-4 routes

我在routes.rb中创建了一个自定义路由,按活动ID克隆我的活动,如下所示:

resources :activities
get "/activities/:id/clone" => "activities#clone", :as => :clone_activity
post "/activities/:id/clone" => "activities#clone"

我现在使用<%= clone_activity_url(@activity) %>;它显示了我http://localhost:3000/activities//clone。而不是附加的ID。

为什么我的身份证不显示?

1 个答案:

答案 0 :(得分:1)

您需要将路径包装在像

这样的块中
resources :activities do
  get "clone" => "activities#clone", :as => :clone_activity
  post "clone" => "activities#clone"
end

这将使得路径/activities/:activity_id/clone的GET或POST将触发activities#clone

的方法

此外,该路由将被称为“activity_clone_activity_path”(或url) - 如果需要,您可以在代码中更改此路径,这也只会引用get路径,因为您只附加了:至于获取路径,如果需要,请附加到两者。