如何自定义或更改rails中的路径路径?

时间:2010-10-17 16:49:52

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

例如,考虑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”,我该怎么做?

4 个答案:

答案 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路由。