【问题标题】:Rails 3 - Nested Resources & Members/CollectionsRails 3 - 嵌套资源和成员/集合
【发布时间】:2011-09-09 02:01:11
【问题描述】:

有没有办法避免这样做...

resources :parents do
  resources :children do
    collection do
      get "/search/:term/:offset/:limit.:format", :action => "search", :constraints => { :term => /\w+/, :offset => /\d+/, :limit => /\d+/ }
    end
  end
end

resources :children do
  collection do
    get "/search/:term/:offset/:limit.:format", :action => "search", :constraints => { :term => /\w+/, :offset => /\d+/, :limit => /\d+/ }
  end
end

我认为这样做是可能的......

resources :parents do
  resources :children do
end

resources :children do
  collection do
    get "/search/:term/:offset/:limit.:format", :action => "search", :constraints => { :term => /\w+/, :offset => /\d+/, :limit => /\d+/ }
  end
end

原因是我希望能够同时使用这两条路线...

/children/search/term/0/10
/parents/1/children/search/term/0/10

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 routes dry


    【解决方案1】:

    这似乎可以解决问题

    def define_children 
      resources :children do
        collection do
          get :search
        end
      end
    end
    
    define_children
    resources :parents do
      define_children
    end
    

    如果使用了通过parent 的路由,则:parent_id 将设置在params 中。否则不会出现。为了清楚起见,我省略了约束。此外,您可能应该将.format 设为可选。

    【讨论】:

    • 似乎是最好的方法。你仍然可以拥有你的资源和所有这些,但是加入这条路线可以为你的资源提供功能并保持干净。
    • 也许我不够清楚。我正在尝试通过简单地管理子资源部分来实现所有子操作。我不想宣布两次。比赛对我没有帮助。我不想在子资源和父资源中声明用于搜索的操作。
    • 我改变了我的解决方案 - 我认为这个符合你的标准
    • 这是一个非常巧妙的想法。我会试一试,如果它有效,我会回来奖励你。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2012-02-09
    相关资源
    最近更新 更多