2016-11-02 43 views
1

我想了解如何在我的Rails 5应用程序中使用命名空间文件夹。Rails:如何呈现命名空间文件的路径

我有机构和Package_ips模型。包是我用来收集不同类型资产的文件夹的名称。 IP是嵌套资产之一。

的关联是:

组织

has_many :ips, as: :ipable, class_name: Package::Ip 
    accepts_nested_attributes_for :ips, reject_if: :all_blank, allow_destroy: true 

套票:叶

belongs_to :ipable, :polymorphic => true, optional: true, inverse_of: :ip 

我的routes.rb文件有:

namespace :package do 
    resources :ips 
end 

在我的组织节目,我试图呈现一个链接到包/ IPS/show.html.erb有:

<%= link_to package_ips_path(@organisation) do %> 

我也曾尝试以下(虽然我认为它错了):

<%= link_to package_ip_path(@organisation) do %> 

在这两种情况下,我得到一个错误,指出:

uninitialized constant Package::IpsController 

,因为当我进入我的Rails控制台我不明白这个错误,我可以看到,有套票:Ips的实例。

o = Organisation.first 
o.ips 
    Package::Ip Load (1.3ms) SELECT "package_ips".* FROM "package_ips" WHERE "package_ips"."ipable_id" = $1 AND "package_ips"."ipable_type" = $2 [["ipable_id", 1], ["ipable_type", "Organisation"]] 
=> #<ActiveRecord::Associations::CollectionProxy [#<Package::Ip id: 1, status: "Offered", classification: 0, identifier: "dasfdsfasd", description: nil, conditions: "asdfdsfsd", ipable_id: 1, ipable_type: "Organisation", created_at: "2016-11-02 21:05:36", updated_at: "2016-11-02 21:05:36", title: "test ip resource">]> 

我的耙路线| grep ip显示:

package_ip GET  /package/ips/:id(.:format)           package/ips#show 

如何链接到组织显示页面的Ip显示视图?

UPDATE

我觉得这个问题可能有一些做有这许多人的IP实例。

我试着制作一个index.html.erb的视图,并试图再次渲染链接。

这一次的错误说:

uninitialized constant Package::IpsController::Ip 

有一个额外的“叶::”上的错误消息的结束。

我仍然不明白问题,但Package :: IpsController的索引操作在错误消息中突出显示。该行为有:

def index 
    @ips = Ip.all 
    # authorize @ips 
    end 

回答

0

您正在为类名缺少引号。它应该是这样的:

has_many :ips, as: :ipable, class_name: 'Package::Ip' 
+0

感谢肖恩。我尝试过 - 但它不会改变错误。 – Mel

+0

对不起,我误解了错误。错误不是关于你的模型,而是关于控制器。你有'app/controllers/package/ips_controller.rb'定义了吗? –

+0

是的,它从这行开始:class Package :: IpsController Mel

0

所以,事实证明我有写索引操作,像这样:

@ips = Package::Ip.all