【发布时间】:2019-09-21 13:13:17
【问题描述】:
我在使用 ruby on rails 进行路由时遇到困难。我在不同的控制器中具有相同的 url 格式,我试图将参数发送到site controller,但它改为发送到pages controller。有什么帮助吗?
Route.rb
resources :sites, :path => '', :except => [:index] do
resources :pages, :path => '' do
end
end
当我运行 rails routes 命令时,我得到的结果如下:
site_pages GET /:site_id(.:format) pages#index
site GET /:id(.:format) sites#show
查看
<%= link_to 'GO', site_path(site) %>
这段代码应该转到site#show,但它转到pages#index,它在下面给我这个错误消息:
NoMethodError in PagesController#index
undefined method `site_id' for nil:NilClass
Parameters:
{"site_id"=>"site A"}
我试过了:
<%= link_to '', site_path(site), :controller => "sites", :action => "show"%>
<%= link_to '', site_path(id: site.id)%>
但它不起作用。任何帮助将不胜感激
【问题讨论】:
-
/:site_id和/:id从路由的角度来看是无法区分的。因此,您认为 应该解析为sites#show的任何内容都(正确)解析为pages#index。
标签: ruby-on-rails url routes