如何删除/发布/从URL?

时间:2016-07-19 00:37:25

标签: ruby-on-rails ruby model-view-controller routes

如何在网址中显示没有/posts/的博文?

http://www.anthonygalli.com/posts/i-walk-the-line
http://www.anthonygalli.com/posts/50-shades-of-galli
http://www.anthonygalli.com/posts/tips-for-regaining-momentum

缩短版本(问题目标):

http://www.anthonygalli.com/i-walk-the-line
http://www.anthonygalli.com/50-shades-of-galli
http://www.anthonygalli.com/tips-for-regaining-momentum

我有post作为MVC。

的routes.rb

resources :posts
get    'about'   => 'posts#about'
get    'feed'    => 'posts#feed'
get    'subscribe' => 'posts#subscribe'

3 个答案:

答案 0 :(得分:2)

将您的routes.rb更改为:

resources :posts, path: '/' do
  collection do
    get 'about'
    get 'feed'
    get 'subscribe'
  end
end

有关Rails路由检查的文档:http://guides.rubyonrails.org/routing.html

答案 1 :(得分:1)

您的路线应该更新为:

resources :posts
get    'about'   => 'posts#about'
get    'feed'    => 'posts#feed'
get    'subscribe' => 'posts#subscribe'
get    ':id'     => 'posts#show', :as => :post_by_slug

如果您要链接到as - 更少的路径,那么/post/选项对于链接到新路线非常重要:

<%= link_to post.title, post_by_slug_path(post) %>

P上。 S.我认为新路线需要在路线的最后列出,以便之前的路线可以优先。 (否则,尝试访问/about会尝试加载一个名为about而不是posts#about操作的帖子的帖子。您应该尝试这一点,看看是否属实。)

答案 2 :(得分:0)

资源生成标准CRUD网址,因此您必须明确指定帖子路由。像这样的东西

get '/desired-url' => 'posts#index'