Ruby on rails 嵌套资源

Ruby on rails 嵌套资源,ruby-on-rails,windows-7,nested-attributes,Ruby On Rails,Windows 7,Nested Attributes,我正在尝试将消息控制器嵌套到通道控制器中。但是当我转到我的messages视图时,我得到一个错误“找不到没有id的频道” 结束这里发生的是这一行: @channel = Channel.find(params[:channel_id]) 由于参数散列中没有定义的通道id,因此正在崩溃。我看到您使用的是浅路由,这意味着您的uri可能如下所示: /messages 你需要它看起来像: /channels/1/messages 尝试将您的url更改为: channel_messages_url(

我正在尝试将消息控制器嵌套到通道控制器中。但是当我转到我的messages视图时,我得到一个错误“找不到没有id的频道”


结束

这里发生的是这一行:

@channel = Channel.find(params[:channel_id])
由于参数散列中没有定义的通道id,因此正在崩溃。我看到您使用的是浅路由,这意味着您的uri可能如下所示:

/messages
你需要它看起来像:

/channels/1/messages
尝试将您的url更改为:

channel_messages_url(@channel)
而不是

messages_url
顺便说一句,这是一个猜测,可能是因为您定义了
路由.rb
,这看起来有点奇怪,因为您定义了两次消息路由,一次是使用has_multi,另一次是作为适当的资源。您可能需要以下内容:

# assuming you need shallow routes
resources :channels, :shallow => true do |channels|
  channels.resources :messages
end

当你进入Messages视图时,你将使用什么URL?Thanx为了获得快速响应,我会在回家和回邮后尝试。我发现你给我的是rails 2.2,我相信,我使用的是rails 3。所以我必须做参考资料:频道做参考资料:消息结束
channel_messages_url(@channel)
messages_url
# assuming you need shallow routes
resources :channels, :shallow => true do |channels|
  channels.resources :messages
end