关于url helper在rails中的文档在哪里?

lam*_*ade 29 ruby-on-rails

我如何知道url helper在Rails中使用的参数?例如,我如何知道url helper只接受下面的一个参数?我知道这些方法是元编程的,但他们的文档在哪里?

link_to "New Ticket", new_project_ticket_path(@project)
Run Code Online (Sandbox Code Playgroud)

geo*_*ock 55

您可以通过查看路径定义来确定路径助手所需的参数数量.

例如,您可能有此路由文件:

resources :users
Run Code Online (Sandbox Code Playgroud)

如果你rake routes在命令行运行,你会看到如下内容:

    users GET    /users(.:format)          users#index
          POST   /users(.:format)          users#create
 new_user GET    /users/new(.:format)      users#new
edit_user GET    /users/:id/edit(.:format) users#edit
     user GET    /users/:id(.:format)      users#show
          PUT    /users/:id(.:format)      users#update
          DELETE /users/:id(.:format)      users#destroy
Run Code Online (Sandbox Code Playgroud)

第一列为您提供路线的名称.您可以追加_path_url获取路线助手的名称.

第三列显示了模式.这是你可以弄清楚参数是什么的地方.参数是以冒号为前缀的部分,括号中显示可选参数.例如,edit_user路由的模式/users/:id/edit(.:format)包含一个必需的参数(id)和一个可选的参数(format),它告诉我需要将至少一个参数传递给edit_user_pathor edit_user_urlhelper:

edit_user_path(1) # => "/users/1/edit"
edit_user_path(2, :html) # => "/users/2/edit.html"
Run Code Online (Sandbox Code Playgroud)

您还可以使用模式中的参数名称作为哈希中的键:

edit_user_path(id: 3, format: 'js') # => "/users/3/edit.js"
Run Code Online (Sandbox Code Playgroud)

最后,您可以添加额外的参数,这些参数将成为查询字符串的一部分:

edit_user_path(id: 4, format: 'json', foo: 1) # => "/users/4/edit.json?foo=1"
edit_user_path(5, bar: 2) # => "/users/5/edit?bar=2"
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅" Rails路由指南"中有关列出现有路由的部分rake routes.


gyl*_*laz 5

我通常会参考Rails路由指南