【问题标题】:custom route for show action using slugs使用 slug 进行表演动作的自定义路线
【发布时间】:2014-01-25 20:59:28
【问题描述】:

我正在尝试为我想要显示的模型创建一些 url。我有文章,属于属于问题的部分。

我希望文章显示操作的 URL 如下所示:

/issue-slug/section-slug/article-slug 问题文章和部分有存储在数据库中的 slug。

现在我有一个名为“新闻室”的后端部分,为此我有以下路线。这是整个 routes.rb 文件

MaskmagazineCom::Application.routes.draw do

 devise_for :users, :path_names => { :sign_up => "register"}, :controllers => {    :registrations => "registrations" }
 # The priority is based upon order of creation: first created -> highest priority.
 # See how all your routes lay out with "rake routes".

 root 'magazine#index'
 get 'users/' => 'users#index'


 # Lobby Routes

 # /log-in

 devise_scope :user do
 get '/sign-in' => 'devise/sessions#new'
end

 # /subscribe

 get 'subscribe' => 'subscribe#stepone'
 get 'subscribe/sliding-scale' => 'subscribe#steptwo'
 get 'subscribe/sliding-scale/subscriber' => 'subscribe#subscriber'
 get 'subscribe/sliding-scale/supporter' => 'subscribe#supporter'
 get 'subscribe/sliding-scale/sustainer' => 'subscribe#sustainer'
 post 'subscribe/sliding-scale/:type' => 'subscribe#createSubscription'



# Pressroom Routes

get '/pressroom' => 'pressroom#index'
scope 'pressroom' do
resources :issues, :articles, :sections, :users, :authors
end

如何提取显示操作并将其路由到我描述的 url?

已编辑:

我已经想出了我希望它在路由文件中执行的操作,但我需要相应的控制器代码:

get '/:issue_slug/:section_slug/:article_slug' => 'article#show'

【问题讨论】:

    标签: ruby-on-rails routes slug friendly-id


    【解决方案1】:

    我建议您查看 friendly_id 以了解这些蛞蝓。

    对于路线,您需要阅读路线:

    # Mag Routes
    
    get '/mag' => 'mag#index' #or wherever you're headed
      scope 'mag' do
        resources :issues do
          resources :sections do
            resources :articles
          end
        end
      end
    end
    

    【讨论】:

    • 我已经在为 slug 使用friendly_id,我很困惑我需要在文章控制器的显示操作中添加什么以获得我想要的网址。
    • 啊。我刚刚向您展示的那部分资源,位于config/routes.rb。你能为我发布你的整个路线文件吗?
    • 以上,我已添加到您的路线中
    • 这不太对,我希望文章#show 显示在 /mag/issue_slug/section_slug/article_slug。其余路线都很好
    • 好吧,mag 实际上是 /pressroom 你现在的布局方式。但这就是你如何获得展示你想要的方式的路径。当您链接到一篇文章时,您将其与[@issue,@section,@article] 链接到您的文章#show 操作。示例 - ecorebox.com/boxes/MM-1/uin/ERB0002512 - 您的路线中的 mag 在哪里?
    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多