对于Rails 3.x中的任意路由,如何使用UrlHelper访问它们?

时间:2011-08-18 20:38:01

标签: ruby-on-rails ruby-on-rails-3 routing

所以我在routes.rb中有这样的路线:

get "customers/:id/payments", :controller=>"customers", :action=>"payments"

在视图中执行此操作时,UrlHelper将生成此内容(如果有):

link_to customer.name, customers_payments_path(customer)

(customers_payments_path无效)

3 个答案:

答案 0 :(得分:3)

get "customers/:id/payments", :controller=>"customers", :action=>"payments", :as => 'customer_payments'

http://guides.rubyonrails.org/routing.html#naming-routes

从以上链接:

  

您可以使用:as选项指定任何路线的名称。

答案 1 :(得分:2)

我喜欢Gazler的答案,如果它只是一次性的路线,但是如果你已经为客户提供了资源路线,那么我会像这样定义这条路线:

resources :customers do
  member do
    get :payments
  end
end

这样,您仍然可以获得通常从资源路径获得的标准customers_pathcustomer_path帮助程序,但它也会以较短的语法生成customer_payments_path。< / p>

答案 2 :(得分:0)

您需要添加:as参数来为路径添加名称,以便您可以从url_helper访问它:

get "confirmations/:code" => "confirmations#show", :as => "show_confirmation"

然后在你的views / controllers / tests中:

link_to "Confirm", show_confirmation_url(confirmation)