Ruby on rails - 删除资源

时间:2016-03-16 23:04:16

标签: ruby-on-rails-4

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

resources :users do
    resource :question
end

创建 / users /:user_id / question 路由到问题#show 以及其他路径。但是,如果没有包含用户ID的URL来显示特定用户创建的每个问题,我想要一个URL来显示一个特定问题的详细信息。像/ question /:id

之类的东西

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

resources :questions, param: :question_id

生成路线列表

questions_path GET /questions(.:format)问题#index POST /questions(.:format)问题#create new_question_path GET /questions/new(.:format)问题#new edit_question_path GET /questions/:id/edit(.:format)问题#edit question_path 获取/questions/:id(.:format)问题#show PATCH /questions/:id(.:format)问题#news PUT /questions/:id(.:format)问题#update DELETE / questions /:id(。:format)

此列表会生成 / questions /:id 路径,但遗憾的是,与之前的问题#show 连接相同。所以我删除了"资源:问题,参数:问题" 并添加了以下内容

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

这会产生适当的路线,但出于某种原因,即使在重新启动服务器后,也无法摆脱从"资源:问题,参数::问题" 创建的路线。因此,每次我访问/问题/:id它会问#show而不是问题#show_question

我如何摆脱"资源:问题,参数:问题" 的影响,即使已将其从routes.rb文件中删除了?

1 个答案:

答案 0 :(得分:0)

我会移除路线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>

这允许其他深度嵌套的资源的网址,例如/ users / a-long-permalink / comments / 1234等博客帖子上的评论缩短为/ comments / 1234。

此处有关浅路线的更多信息http://edgeguides.rubyonrails.org/routing.html