如何使用带有polymorphic_path帮助器的命名空间模型?

时间:2017-04-25 09:18:50

标签: ruby-on-rails

当提供对象时,Rails通常非常聪明地确定正确的路由。例如

<%= form_for [@parent,@child] do |f| %>

<%= polymorphic_path(@parent,@child) %>

但是在使用命名空间模型时我总是遇到问题。

例如,使用时:

@parent = ActsAs::Draft.find(params[:draft_id])
@child = ActsAs::Vote.new 

Rails尝试使用

polymorphic_path(@parent,@child) = acts_as/drafts/:id/acts_as/votes

这是有道理的。但是如何定义这条路线?

使用

namespace :acts_as do 
  resources :drafts do 
    namespace :acts_as do
      resources :votes 
    end
  end
end

Rails尝试查找双命名空间控制器

ActsAs::ActsAs::Votes

将模块设置为nil

namespace :acts_as do 
  resources :drafts do 
    namespace :acts_as, module: nil do
      resources :votes 
    end
  end
end

引发wrong constant name错误,我认为是因为Rails现在正在寻找Votes而不是ActsAs::Votes

明确定义控制器

resources :votes, controller: "acts_as/votes"

无济于事。

我必须忽视这里显而易见的事情!

使用polymorphic_path命名空间模型的正确方法是什么?

0 个答案:

没有答案
相关问题