Fra*_*gio 16 ruby-on-rails ruby-on-rails-4
在运行rake路线时,我看到:
 Prefix   Verb   URI Pattern                                       Controller#Action
 articles  GET    /articles(.:format)                               articles#index
 new_article GET    /articles/new(.:format)                           articles#new
和其他一些我遗漏的人.
这是因为我的routes.rb文件有:
resources :articles
我的问题是这个前缀究竟是什么,我将如何更改它?
根据我的理解,它是URI的快捷方式,所以在我的应用程序中我可以引用new_article而不是articles/new?我真的参考@new_article还是有其他格式来引用它.
第二个问题,我该如何编辑?假设我想要一个名为new_document的前缀而不是new_article用于该URL上的get请求.我会在routes.rb文件中添加什么?
Ric*_*eck 19
路径
我不确定为什么叫它prefix- 它应该被称为path helper:

最重要的是当您调用类似link_to或form_tag等的帮助程序时- 他们将需要paths在您的应用程序的路由结构中填充不同的操作.
由于Rails喜欢convention over configuration和DRY编程,这意味着如果您可以path helpers使用标准来引用它们urls,它将允许您根据需要提供一个参考和机会路线
例如
电话articles_path是远远比引用更强大的/articles每次
路线
要正确回答您的问题,您需要了解Rails使用resourceful路由 - 基本上意味着route您创建的每个帮助应该围绕应用程序中的任何资源进行定义
由于Rails的MVC结构,这些资源通常由controllers您使用的定义:
#config/routes.rb
resources :articles #-> articles_path etc
要回答您的问题,您需要了解您应始终按原样引用您的资源(在您的情况下articles).
要自定义路径助手,您需要更改 routes文件中的引用,如下所示:
#config/routes.rb
resources :articles, as: :document, path: "document" #-> domain.com/documents
这允许您定义自定义路径/路径助手,允许您根据需要调用它们
Ege*_*soz 17
它让你使用快捷键,比如new_article_path或new_article_url在你的控制器和视图.在执行将用户重定向到特定页面或生成动态链接等操作时,这些功能非常方便.
您可以通过as:在routes.rb文件中添加选项来更改前缀.例如:
GET '/new', to: 'articles#new', as: 'my_new_article`
这会将前缀更改为my_new_article.
您还可以为其使用路由范围。在您的routes.rb文件中:
Rails.application.routes.draw do
  # Any other routes here
  scope 'admin' do
    resources :articles
  end
end
/admin/articles并且所有其他与 CRUD 相关的路由都可以使用link_to,表单提交控件等。
小智 6
你是对的,前缀用于构建命名路由,因此resources method在routes文件中创建路由等articles_path, new_article_path.要在代码中引用路由,请添加path到您看到的前缀running rake routes.
如果要更改路由文件中resources方法生成的前缀,请使用:as option,如下所示:
resources :articles, as: :posts
这将生成您可以在视图中使用的'new_post_path'等路线.
如果要在浏览器中更改路径的路径,可以使用以下path选项:
resources :articles, path: :posts
这将生成/posts/1 or /posts/new代替/articles/1 or /articles/new的路由,但路由仍将articles_path, new_article_path在您的代码中命名为etc.您可以使用这两个:path and :as选项来更改两个path and the prefix资源路由.
要更改路径文件中的基本路线,您可以简单地使用:as,如下所示:
get 'messages' => 'messages#index', as: :inbox
这将创建您可以在代码中使用的路径inbox_path.
希望有所帮助!