我想保留我的嵌套资源在其父项的上下文中。这里是我的代码如下:Rails:限制嵌套的资源路径
的routes.rb:
resources :categories do
resources :subcategories
end
迁移:
create_table "categories" do |t|
t.string "name"
end
create_table "subcategories" do |t|
t.string "name"
t.integer "category_id"
end
车型:
class Categories < ActiveRecord::Base
has_many :subcategories
end
class Subcategories < ActiveRecord::Base
belongs_to :category
end
^h ERE的我的资料:
Category
id
:[1,2]
Subcategory
id
:[1..10],category_id
:1
Subcategory
id
:[11..20],category_id
:2
对于我的路径,/category/1/subcategory/[1..10]
工作得很好。但是,如果我直接编辑网址到/category/1/subcategory/[11..20]
,即使它们在category id: 2
下,子类别仍显示。
我必须在我的代码中丢失一些东西。有些事告诉我,这不是它应该如何工作。如果您输入的subcategory
id
与它的category_id
没有关联,它应该会报错。
我该如何解决这个问题?
我会试试看。但即使如此,我不确定这是否解决了直接编辑url的问题,是吗? – leejay100 2015-04-05 00:31:40
@ leejay100:事实上,它确实如此。你可以把它想象成一个检查链:比方说,uri是'/ category/1/subcategory/15'。所以,起初,这个方法找到所有的类别都是'id = 1'(正如你所看到的,你只有一个)。然后找到它的所有子类别('[1..10]'),然后尝试在该集合中找到具有'id = 15'的子类别,但没有它,因此没有任何显示。 – potashin 2015-04-05 00:37:27
啊,我明白了。我只是把这个放在show方法中。谢谢@notulysses – leejay100 2015-04-05 00:45:58