【问题标题】:Ruby on rails - removing routes created by resourceRuby on rails - 删除资源创建的路线
【发布时间】:2016-07-03 02:20:26
【问题描述】:

我的路由文件中有以下内容

resources :users do
    resource :question
end

创建一个 /users/:user_id/question 路由到 question#show 等等。但是,我想要一个 URL 来显示一个特定问题的详细信息,而不是其中包含用户 ID 的 URL 来显示特定用户创建的每个问题。 /question/:id 之类的东西

为此,我将以下行添加到我的路线文件中

resources :questions, param: :question_id

生成路线列表

questions_path GET /questions(.:format) questions#index POST /questions(.:format) questions#create new_question_path GET /questions/new(.:format) questions#new edit_question_path GET /questions/:id/edit(.:format) questions#edit question_path GET /questions/:id(.:format) questions#show PATCH /questions/:id(.:format) questions#update PUT /questions/:id(.:format) questions#update 删除 /questions/:id(.:format)

此列表生成 /questions/:id 路径,但不幸的是,与前一个发生冲突的 questions#show 连接相同。所以我删除了 "resources :questions, param: :question" 并添加了以下内容

get 'questions/:id', :to => 'questions#show_question'

这会产生适当的路由,但由于某种原因,即使在重新启动服务器后也不会删除从 "resources :questions, param: :question" 创建的路由。所以每次我访问 /question/:id 时,它都会去 question#show 而不是 question#show_question

即使从 routes.rb 文件中删除了 "resources :questions, param: :question" 的影响,我如何摆脱它?

【问题讨论】:

    标签: ruby-on-rails-4


    【解决方案1】:

    我会删除路线get 'questions/:id', :to => 'questions#show_question' 并改用浅层路线

     resources :users do
      resources :questions, shallow: true
     end
    

    然后你的 url_helper 应该是

    <td><%= link_to 'Show', question_path(question) %></td>
    

    这允许将深度嵌套的资源的 URL 缩短为仅 /cmets/1234。

    更多关于浅层路线的信息在这里http://edgeguides.rubyonrails.org/routing.html

    【讨论】:

      猜你喜欢
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多