例如,考虑rake路线的以下输出: -
帖子 GET /posts(.:format){:action =>“index”,:controller =>“posts”}
发布帖子 / postts(.:format){:action =>“create”,:controller =>“posts”}
* new_post * GET /posts/new(.:format) {:action =>“new”,:controller =>“posts”}
* edit_post * GET /posts/:id/edit(.:format) {:action =>“edit”,:controller =>“posts”}
发布 GET /posts/:id(.:format){:action =>“show”,:controller =>“posts”}
如果我想将“new_post”的路径名更改为“create_post”,我该怎么做?
答案 0 :(得分:4)
match '/posts/new' => 'posts#new', :as => :create_post
应该有效!
答案 1 :(得分:4)
您必须结帐railscast for routing in rails 3
解决您的问题的解决方案
match '/posts/new' => 'posts#new', :as => :create_post
答案 2 :(得分:2)
此处的“匹配”不合适。它可能会带来安全问题,因为默认情况下它会打开与每个请求动词匹配的路径(get,post等)。您应该指定动词代替匹配
get '/posts/new' => 'posts#new', as: :create_post
或者您可以使用匹配
指定要使用的动词match '/posts/new' => 'posts#new', as: :create_post, via: [:get]
答案 3 :(得分:1)
在rails 5
中你可以像 -
get '/create_post', to: 'posts#new'
您应该更喜欢http method keywords
,而不是根据API docs直接使用match
。
另外,我会在Rails中选择由RESTful
方法生成的默认resources
路由,而不是定义所有自定义REST路由。