0

我有一个资源从其父级继承其表和控制器。它的父母也有我想要传递给它的自定义路由,但我不知道如何(或甚至可能)。该航线目前是这样的:Rails:嵌套的STI是否继承自定义方法

resources :publications do 
    resources :editions, :controller => :publications 
    collection do 
    get :autocomplete, :claim, :current_users_publications, :lightbox, :lookup 
    post :review 
    end 
    member do 
    get :audit, :reassign_prompt 
    post :approve, :audit_vote 
    put :reassign 
    end 
end 

随着当前的设置,该版本机型并没有获得像“审计”或自定义方法“自动完成”。是否有可能做一些像“:routes =>:publications”的东西?

回答

1

退房Routing Concerns

# Define the concern 
concern :somethingable do 
    collection do 
    get :autocomplete, :claim, :current_users_publications, :lightbox, :lookup 
    post :review 
    end 
    member do 
    get :audit, :reassign_prompt 
    post :approve, :audit_vote 
    put :reassign 
    end 
end 

# And now your routing 
resources :publications, concerns: :somethingable do 
    resources :editions, controller: :publications, concerns: :somethingable 
end 

我相信你能想到一个更好的词比:somethingable来描述共同的行为

更新

因为上面是导轨master分支,有几种选择可以使用

  1. 有一个gem抽象Rails中3.2+
  2. 而不是使用concern的这种行为中使用,只需创建你的路由文件的方法。

    def somethingable 
        collection do 
        get :autocomplete, :claim, :current_users_publications, :lightbox, :lookup 
        post :review 
        end 
        member do 
        get :audit, :reassign_prompt 
        post :approve, :audit_vote 
        put :reassign 
        end 
    end 
    

    那么你的路由可能看起来像

    resources :publications do 
        somethingable 
    
        resources :editions, controller: :publications do 
        somethingable 
        end 
    end 
    
+0

这不是为我工作,利用边缘轨道,虽然我也不是。也许我应该考虑更新。无论哪种方式,很高兴知道这是在那里。 – nullnullnull

+0

我希望我的更新能够让你在非'master'分支导轨的正确方向上运行。 – deefour