我的路线文件中有以下内容
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文件中删除了?
答案 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