如何设置部分嵌套的资源路由?

时间:2011-11-15 23:22:36

标签: ruby-on-rails-3 routes url-routing nested-resources

在我的Rails网站上,用户发布了他们想要销售的Listings件商品。其他用户可以浏览这些商家信息并点击链接与卖家联系,这应该创建MessageThread

# MessageThread properties...
listing_id
poster_id # (listing_id's owner.. this is a shortcut for to avoid joins on the database)
sender_id
body # (text of message)

MessageThreads永远不会在Listing的上下文之外创建,因此我将其资源丰富的路由嵌套。但是,创建它们后,它们不需要Listing上下文进行查看/编辑。只有newcreate操作才需要这样做。我这样设置:

resources :message_threads, :only => [:show, :destroy]

resources :listings do
   resources :message_threads, :only => [:new, :create]
end

我似乎无法在form_for的{​​{1}}操作视图中找出new语法...我做MessageThreadsController但这不起作用。这是设置此对象的正确方法吗?我应该避免使用资源丰富的路由,还是将列表ID作为URL中的参数传递,而不是嵌套路由?或者始终引用列表下方的message_thread?

1 个答案:

答案 0 :(得分:1)

这应该有效:

form_for @message_thread, :url => listing_message_threads_path(@listing)

您始终可以在命令行中运行它

rake routes | grep message_thread

新链接

new_listing_message_threads_path(@listing)